8.2 KiB
Independent teaching-project review — 2026-09-06
Scope: the new examples/release1 model/builder, generated source/interchange, tutorial/evidence, generator, and release1_teaching tests. I did not author those model files. My Home hook is excluded from this independent assessment. No Cargo, native input, model edits or HTTP calls were performed for this review.
Findings
| Priority | Finding and evidence | Smallest useful correction |
|---|---|---|
| P1 workflow | examples/release1/README.md:5 presents Save As to a new folder as equivalent to copying the lesson, while the evidence target is relative (sa/behavior/scenario_sa_conversation.arcadia, artifact URI evidence/repair-check.md). Save As enumerates only snapshot.bundle.files and calls the source writer (crates/oa-desktop/src/app.rs:3883); it does not copy the Markdown evidence or tutorial. A fresh working folder therefore loses the linked evidence after following the suggested route. |
Prefer copying the entire lesson folder before opening/editing. If using Save As, explicitly copy evidence/ too and keep the tutorial available. Do not broaden generic Save As into automatically copying arbitrary artifact targets. Root accepted this finding and requested consistent tutorial/Home/guide wording. |
| P2 semantic scope | model.rs:545 gives Repair request and measured reply the triage capability context, named Assess an alarm (model.rs:233), although its precondition says the alarm has already been assessed (model.rs:93) and its two messages request repair and return pressure after repair. Generated OA source confirms context @oa_triage at oa/behavior/scenario_oa_conversation.arcadia:2; the real transition carries the same mismatch into SA. This is structurally valid, but assigns the demonstrated repair behavior to the wrong stated engineering objective. |
Assign the repair conversation to the restoration capability, or deliberately rename/redefine its capability to include repair coordination and reconcile the assessment-support link. Assessment already has an explicit CapabilityInvolvement, so a misleading repair context should not be needed to suppress a support warning. Re-run the one-warning oracle after the model author chooses the correction. No model change was made by this reviewer. |
| P2 release regression gap | crates/oa-core/tests/release1_teaching.rs:15 compares generated baseline/request between two builds, and lines 18–29 compare shipped source/model JSON. It never compares shipped transition-before.json, transition-request.json or expected-diagnostics.json against that generated result. The tutorial advertises these files as exact replay/diagnostic inputs. They could become stale while all four tests pass. |
Extend the existing deterministic/shipped-file test to decode and compare all three advertised JSON inputs. This is an evidence gap, not a demonstrated mismatch in the current files. |
| P3 discoverability | README.md:47 calls the intentional-warning function Audit alarm thresholds, but the actual name is Audit pressure thresholds (model.rs:891 and generated sa/functions/function_sa_audit_thresholds.arcadia). The alias is correct, so this does not invalidate the diagnostic. |
Match the actual displayed name. |
Substantive checks and bounded conclusions
The main engineering story is coherent: OA participants directly perform leaf activities; Interactions connect those activities and explicit ExchangeAllocations associate both directions with an unoriented CommunicationMean. The chosen SA service boundary and external technician are explicit mappings. The transition request clears field copies so it preserves the deliberately different System name, and supplies both Standard component-port Create decisions. Four later PortAllocations and two ExchangeAllocations implement the stated interface refinement; the tutorial explicitly distinguishes that later refinement from the first transition.
The process uses explicit Choice/else/Merge SequenceLinks, and its SequenceReference reuses the field procedure by identity. Scenario Call/Reply values are typed InOut pressure parameters; Reply refers to the actual Call and reverses its participants. ScenarioUse has two explicit bindings. The state machine's Change event, guarded return, and Entry StateAction are typed model facts. The narrative explicitly disclaims executable hydraulic/control/safety validation. The one unfinished leaf function has a responsible participant but no behavior use, so the advisory warning and suggested modeling decision are appropriate. Architecture SVG scope is stated without claiming faithful behavior export.
Source-address guidance for the reviewed name change matches the actual SA module and traceability file. The test performs a real semantic transition and checks unrelated modules remain identical. Deterministic aliases/UUIDs are assigned to generated identities through the shared reidentify mechanism, with graph/reference preservation checked by canonical source round-trip. Full/filtered views share semantic and technical-port geometry; the focused view's empty work-category selection intentionally removes functional traffic.
A read-only JSON consistency probe found 65 requested transition sources matching exactly all OA baseline elements and non-ExchangeAllocation relations, two explicit participant mappings, one communication endpoint decision, zero copied existing fields, and no differences between baseline/final OA element records. This does not substitute for replaying the shipped request through REST. The documented raw JSON and SourceBundle import shapes match routes.rs:318/:339; the tutorial accurately says these routes do not fetch local artifact targets and does not claim HTTP/native acceptance of this particular lesson.
The author reported four focused core tests and strict Clippy passing. This review inspected their code, not a fresh run. Native discoverability, the full 25-minute learner workflow, copied evidence availability, and the exact HTTP lesson replay remain separate acceptance evidence. No broad release-complete claim follows from this review.
Follow-up status
Root accepted the evidence-copy finding. The reviewer corrected README/Home/guide visible instructions to prefer copying the entire lesson folder and to require separately copying evidence/ when using Save As; generic save behavior is unchanged. README now uses the actual Audit pressure thresholds display name. These copy-only edits are formatted/diff-check clean and not rebuilt while the Linux VM owns resources; the existing 246B… walkthrough stage and Linux snapshot precede them.
The model author completed the scenario correction: both OA and SA repair conversations now use the restoration capability. A separate Assess an alarm procedure contains an Action using assessment and explicitly contributes to the assessment capability; the main process references this procedure. Independent inspection of the builder, generated conversation source and assertions confirms this addresses the scope problem without removing the assessment obligation or disguising it with an unrelated scenario. The current bundle has 30 source files; README now states 29 included modules and describes both distinct capability contexts.
The shipped-input gap is also closed in source: the deterministic test now decodes and compares transition-before.json, transition-request.json and expected-diagnostics.json against the generated result. The author reports four expanded tests passing through direct rustc with warnings denied. This reviewer did not rerun those tests or replay HTTP; the previous native stage and immutable Linux snapshot still predate these teaching corrections. The earlier 65-source read-only probe above describes the pre-correction lesson, not the new request.
Subsequent packaging update: the corrected visible guidance compiled and passed strict workspace Clippy with the behavior-transition build. Stage .local/native-qa/bin-source6-behavior-context (F5ECAE… desktop) includes all 37 current teaching files, including 30 source files, each hash-verified against the working folder. This closes the earlier unbuilt-copy status for that stage only; no native walkthrough of it is claimed here.