Course Lab Results Interpretation
Overview
Turn handout-grounded lab evidence into standalone interpretation artifacts without drifting into discussion generation, direct report mutation, or final QC.
This skill is standalone with local copied tools. It should read the normalized handout first, then justify processed-data artifacts through explicit comparison lanes against simulation outputs, handout standard/example values, internet references, and theory-based comparison values when those exist, while keeping unresolved comparison gaps visible instead of hiding them inside stronger prose.
Standalone Tool Contract
Use Independently When
- Normalized handout artifacts and processed-data artifacts exist and the task is to produce artifact-only result interpretation, not report mutation.
- The run needs handout-first justification, comparison lanes, anomaly visibility, completeness checks, or proposal artifacts before discussion or final staging.
Minimum Inputs
- Normalized handout JSON/Markdown artifacts.
- Processed-data JSON/Markdown artifacts or result inventory produced from validated data.
- Output destination for interpretation JSON/Markdown artifacts.
Optional Workflow Inputs
- Plot manifests, modeling outputs, simulation outputs, reference/literature artifacts, run-plan comparison obligations, and approved proposal metadata.
- Theoretical comparison values or upstream theory artifacts when explicitly available.
- Existing
agent_proposed_key_results state for pending/approved/rejected proposal tracking.
Procedure
- Read the handout before interpreting processed results and build explicit comparison lanes only from available support.
- Emit support/credibility labels such as handout-backed, data-backed, plot-backed, simulation-backed, reference-backed, theory-backed, generic/speculative, or unresolved.
- Keep
agent_proposed_key_results and candidate_literature_sources artifact-only and pending_user until a user marks them approved, rejected, or needs_revision.
- Preserve unresolved comparison gaps instead of downgrading or hiding them in stronger prose.
Outputs
- Artifact-only interpretation JSON and Markdown.
comparison_records across supported handout expectations, simulation outputs, handout standards, internet/reference values, theory values, and approved literature values.
agent_proposed_key_results, candidate_literature_sources, completeness warnings, and unresolved justification gaps where applicable.
Validation
- Every confirmed comparison record has an explicit support source and credibility/support label.
- Pending proposals are not promoted into confirmed comparison sets or canonical references.
- Missing modeling/reference/theory support remains visible in unresolved output while still allowing honest partial interpretation artifacts.
Failure / Reroute Signals
- Missing processed data or normalized handout: in standalone mode, stop and request the artifact; in full-workflow mode, reroute to the missing upstream tool.
- Missing optional reference/model lane: emit partial interpretation plus unresolved gap rather than blocking all output unless that lane is required by the handout.
- Extra comparison-worthy result discovered: emit it as
pending_user proposal, not final scope.
Non-Ownership
- Does not mutate
main.tex, draft broad final discussion prose, stage figures, or run final QC.
- Does not silently confirm internet/theory/simulation comparisons without source support.
Optional Workflow Metadata
- Suggested future role label:
data-analyst.
- Typical upstream tools:
course-lab-data-processing, course-lab-uncertainty-analysis, course-lab-plotting, modeling/reference tools.
- Typical downstream tools:
course-lab-discussion-ideas, course-lab-discussion-synthesis, course-lab-final-staging.
Primary Command
python3 /root/.codex/skills/course-lab-results-interpretation/scripts/build_results_interpretation.py \
--handout-sections-markdown "/path/to/results/<experiment>/notes/sections.md" \
--handout-sections-json "/path/to/results/<experiment>/notes/sections.json" \
--processed-data-json "/path/to/results/<experiment>/analysis/processed_data.json" \
--processed-data-markdown "/path/to/results/<experiment>/analysis/processed_data.md" \
--plots-manifest "/path/to/plottings/plot_manifest.json" \
--modeling-result "/path/to/modeling/run_result.json" \
--references-json "/path/to/results/<experiment>/analysis/reference_values.json" \
--run-plan-json "/path/to/results/<experiment>/<experiment-safe-name>_run_plan.json" \
--run-plan "/path/to/results/<experiment>/<experiment-safe-name>_run_plan.md" \
--output-json "/path/to/results/<experiment>/results_interpretation.json" \
--output-markdown "/path/to/results/<experiment>/results_interpretation.md" \
--output-unresolved "/path/to/results/<experiment>/results_interpretation_unresolved.md"
Reference staging helper before the interpretation pass:
python3 /root/.codex/skills/course-lab-results-interpretation/scripts/stage_reference_values.py \
--handout-sections-markdown "/path/to/results/<experiment>/notes/sections.md" \
--handout-sections-json "/path/to/results/<experiment>/notes/sections.json" \
--processed-data-json "/path/to/results/<experiment>/analysis/processed_data.json" \
--seed-references-json "/path/to/results/<experiment>/analysis/reference_seed_values.json" \
--search-spec-json "/path/to/results/<experiment>/analysis/reference_search_spec.json" \
--approved-literature-json "/path/to/results/<experiment>/analysis/approved_literature.json" \
--output-json "/path/to/results/<experiment>/analysis/reference_values.json" \
--output-unresolved "/path/to/results/<experiment>/analysis/reference_values_unresolved.md"
Recommended references-json shape when justification needs multiple lanes:
{
"comparison_requirements": {
"required_bases": ["internet_reference", "theoretical_computation"],
"optional_bases": ["handout_standard"]
},
"references": [
{
"name": "youngs_modulus",
"label": "Handout stainless reference",
"value": 1.95e11,
"unit": "Pa",
"comparison_basis": "handout_standard",
"source": "notes/sections.md:157"
},
{
"name": "youngs_modulus",
"label": "Published alloy reference",
"value": 2.00e11,
"unit": "Pa",
"comparison_basis": "internet_reference",
"source": "https://example.org/material-data"
},
{
"name": "youngs_modulus",
"label": "Beam-model inversion",
"value": 2.01e11,
"unit": "Pa",
"comparison_basis": "theoretical_computation",
"source": "analysis/theory_checks.json:youngs_modulus"
}
]
}
Workflow
- Confirm that processed-data artifacts already exist.
- Read the normalized handout first.
- Read optional handout JSON only when handout Markdown is absent.
- Read processed-data JSON as the primary data evidence base.
- Read optional processed-data Markdown only as a consistency check against the JSON artifact.
- Gather justification evidence for the processed results that need checking.
- Prefer running
/root/.codex/skills/course-lab-results-interpretation/scripts/stage_reference_values.py before the interpretation pass when internet-reference staging is needed.
- Read optional plot manifests, modeling outputs, references, run-plan expectations, and confirmed run-plan JSON obligations when they exist.
- For each important processed result, compare against:
- handout standard/example values when the handout provides them
- internet references gathered from credible sources with preserved links
- relevant theoretical comparison values or upstream theory artifacts
- When
comparison_obligations are confirmed upstream, use them to drive primary lanes such as theory_vs_data, simulation_vs_data, and literature_report_vs_data.
- Build a result inventory before writing interpretation notes.
- Build explicit
comparison_records across handout expectations, simulation outputs, handout standards, internet references, theory values, and approved literature values when those lanes are supported.
- Emit
agent_proposed_key_results and candidate_literature_sources for extra results that still need confirmation; keep those proposals artifact-only and pending until the user marks them approved, rejected, or needs_revision.
- Emit artifact-only JSON and Markdown outputs for downstream consumers.
- Keep unresolved notes explicit when simulation or justification lanes are missing, evidence conflicts, or expected result families are still absent.
Quick Reference
Contract Notes
- Use local
/root/.codex/skills/course-lab-results-interpretation/scripts/build_results_interpretation.py as the main synthesis entrypoint.
- Use local
/root/.codex/skills/course-lab-results-interpretation/scripts/stage_reference_values.py to stage reference_values.json by merging local handout/theory seeds with live internet search results.
- Keep runtime dependencies local to
/root/.codex/skills/course-lab-results-interpretation/.
- Read the normalized handout first and treat it as required interpretation context.
- Treat processed-data JSON as a required base input.
- Prefer normalized handout Markdown first. Fall back to normalized handout JSON only when Markdown is absent.
- Treat processed-data Markdown, plot manifests, modeling outputs, references, run-plan expectations, and confirmed
comparison_obligations as optional supporting inputs.
- Emit artifact-only outputs:
results_interpretation.json
results_interpretation.md
results_interpretation_unresolved.md
- Include
comparison_records in results_interpretation.json so handout/data/simulation/theory comparisons stay explicit instead of getting buried in prose.
- When a confirmed run-plan JSON exists, read
comparison_obligations from it and treat those obligations as the primary comparison contract.
- Emit
agent_proposed_key_results when interpretation discovers extra comparison-worthy results that still need user confirmation.
- Mark proposals explicitly with states such as
pending_user, and keep only later approved proposals eligible for promotion into downstream reference artifacts.
- Emit
candidate_literature_sources only for proposal paths; do not silently promote those sources into the confirmed comparison set.
- Prefer one reference artifact that can hold multiple entries per processed result, distinguished by
comparison_basis such as handout_standard, internet_reference, and theoretical_computation.
- Preserve approved literature promotion with explicit
comparison_basis: literature_report and lane: literature_report_vs_data.
- When internet references are used, preserve the concrete source link and enough citation metadata for later attribution.
- Use
comparison_requirements in references-json when a run should explicitly require some justification lanes, for example internet_reference and theoretical_computation.
- If theory or reference support is missing, still emit partial interpretation artifacts when the remaining lanes stay honest.
- If a required justification lane is missing for a processed result, keep that gap explicit in unresolved output instead of silently downgrading the check.
- If the handout expects simulation comparison and modeling artifacts are missing, keep that gap visible in unresolved output instead of downgrading it silently.
- Keep unresolved comparison gaps, conflicting evidence, and missing expected result families visible instead of inventing stronger conclusions.
| Situation |
Action |
| Normalized handout exists and processed data exists |
Read the normalized handout first before interpreting the data |
| Processed data exists but no references exist |
Emit a partial interpretation artifact and record unresolved justification gaps |
| A result such as Young's modulus or a characteristic frequency needs justification |
Seek a handout value if present, search the internet for a credible comparison source, and include a theory-based comparison value when available |
| Plot manifest exists |
Mark matching result inventory entries as plotted |
| Modeling outputs exist |
Compare matching simulation outputs against data and add explicit comparison records |
| Handout says simulation comparison is required but no modeling result exists |
Emit an unresolved simulation-comparison gap |
references-json includes multiple entries for one result |
Emit one comparison record per comparison_basis instead of collapsing them into one generic reference lane |
Confirmed run-plan JSON includes comparison_obligations |
Treat those obligations as the source of truth for primary comparison lanes |
| Interpretation finds an extra qualitative or literature-backed result |
Emit it in agent_proposed_key_results with pending_user instead of silently promoting it |
| Approved literature metadata exists upstream |
Promote only the approved entries into the canonical reference artifact with explicit literature lanes |
comparison_requirements demands a lane that is absent |
Emit an unresolved missing-justification note for that result |
| Processed-data JSON and Markdown disagree |
Record an unresolved conflict instead of choosing silently |
| Run plan names a missing result family |
Emit a completeness warning in the output artifacts |
| Downstream flow needs report prose |
Hand off these artifacts to later discussion or final staging instead of mutating main.tex here |
Boundary Rules
- This skill starts only after normalized handout artifacts and processed-data artifacts are available.
- This skill owns artifact-only interpretation outputs, not report mutation.
- This skill does not run modeling, generate discussion ideas, or perform final QC.
- This skill does not rerun upstream raw-data processing or full modeling jobs, but it may compute lightweight comparison deltas once the comparison values already exist.
- Keep all runtime tool usage local to this standalone folder.
- Do not mutate
main.tex or any direct report file from this skill.
- Do not write handout, internet, theory, or simulation comparisons as confirmed when the supporting values are missing.
- Do not silently move
pending_user proposal items into the confirmed comparison set.
- Do not promote candidate literature sources unless the parent flow has marked them
approved.
- Do not skip the handout. Read the normalized handout first.
Common Mistakes
- Reaching back into the parent skill or sibling skill folders instead of using the local copied script.
- Interpreting processed data before reading the handout.
- Turning missing handout/internet/theory lanes into implicit agreement language.
- Treating simulation outputs as decorative source hints instead of explicit comparison targets.
- Collapsing handout standards, internet references, and theory calculations into one vague comparison bucket.
- Folding discussion generation into the interpretation layer.
- Treating processed-data Markdown as a silent override instead of a consistency check.
- Letting the skill mutate report files instead of staying artifact-only.
Resources
scripts/common.py: local helpers for JSON and text I/O
scripts/build_results_interpretation.py: local interpretation builder
scripts/stage_reference_values.py: local helper that searches the web and stages reference_values.json
tests/baseline_failures.md: RED-phase failure record for this skill
tests/test_skill_package.py: standalone package checks
tests/test_build_results_interpretation.py: CLI behavior checks
tests/test_stage_reference_values.py: staged reference helper checks
1---2name: course-lab-results-interpretation3description: Use when a course lab-report run already has normalized handout artifacts plus processed-data artifacts and now needs handout-first result justification, explicit handout/internet/theory comparison lanes, anomaly visibility, or completeness checks before discussion generation or final staging.4---56# Course Lab Results Interpretation78## Overview910Turn handout-grounded lab evidence into standalone interpretation artifacts without drifting into discussion generation, direct report mutation, or final QC.1112This skill is standalone with local copied tools. It should read the normalized handout first, then justify processed-data artifacts through explicit comparison lanes against simulation outputs, handout standard/example values, internet references, and theory-based comparison values when those exist, while keeping unresolved comparison gaps visible instead of hiding them inside stronger prose.1314## Standalone Tool Contract1516### Use Independently When17- Normalized handout artifacts and processed-data artifacts exist and the task is to produce artifact-only result interpretation, not report mutation.18- The run needs handout-first justification, comparison lanes, anomaly visibility, completeness checks, or proposal artifacts before discussion or final staging.1920### Minimum Inputs21- Normalized handout JSON/Markdown artifacts.22- Processed-data JSON/Markdown artifacts or result inventory produced from validated data.23- Output destination for interpretation JSON/Markdown artifacts.2425### Optional Workflow Inputs26- Plot manifests, modeling outputs, simulation outputs, reference/literature artifacts, run-plan comparison obligations, and approved proposal metadata.27- Theoretical comparison values or upstream theory artifacts when explicitly available.28- Existing `agent_proposed_key_results` state for pending/approved/rejected proposal tracking.2930### Procedure31- Read the handout before interpreting processed results and build explicit comparison lanes only from available support.32- Emit support/credibility labels such as handout-backed, data-backed, plot-backed, simulation-backed, reference-backed, theory-backed, generic/speculative, or unresolved.33- Keep `agent_proposed_key_results` and `candidate_literature_sources` artifact-only and `pending_user` until a user marks them `approved`, `rejected`, or `needs_revision`.34- Preserve unresolved comparison gaps instead of downgrading or hiding them in stronger prose.3536### Outputs37- Artifact-only interpretation JSON and Markdown.38- `comparison_records` across supported handout expectations, simulation outputs, handout standards, internet/reference values, theory values, and approved literature values.39- `agent_proposed_key_results`, `candidate_literature_sources`, completeness warnings, and unresolved justification gaps where applicable.4041### Validation42- Every confirmed comparison record has an explicit support source and credibility/support label.43- Pending proposals are not promoted into confirmed comparison sets or canonical references.44- Missing modeling/reference/theory support remains visible in unresolved output while still allowing honest partial interpretation artifacts.4546### Failure / Reroute Signals47- Missing processed data or normalized handout: in standalone mode, stop and request the artifact; in full-workflow mode, reroute to the missing upstream tool.48- Missing optional reference/model lane: emit partial interpretation plus unresolved gap rather than blocking all output unless that lane is required by the handout.49- Extra comparison-worthy result discovered: emit it as `pending_user` proposal, not final scope.5051### Non-Ownership52- Does not mutate `main.tex`, draft broad final discussion prose, stage figures, or run final QC.53- Does not silently confirm internet/theory/simulation comparisons without source support.5455## Optional Workflow Metadata56- Suggested future role label: `data-analyst`.57- Typical upstream tools: `course-lab-data-processing`, `course-lab-uncertainty-analysis`, `course-lab-plotting`, modeling/reference tools.58- Typical downstream tools: `course-lab-discussion-ideas`, `course-lab-discussion-synthesis`, `course-lab-final-staging`.5960## Primary Command6162```bash63python3 /root/.codex/skills/course-lab-results-interpretation/scripts/build_results_interpretation.py \64 --handout-sections-markdown "/path/to/results/<experiment>/notes/sections.md" \65 --handout-sections-json "/path/to/results/<experiment>/notes/sections.json" \66 --processed-data-json "/path/to/results/<experiment>/analysis/processed_data.json" \67 --processed-data-markdown "/path/to/results/<experiment>/analysis/processed_data.md" \68 --plots-manifest "/path/to/plottings/plot_manifest.json" \69 --modeling-result "/path/to/modeling/run_result.json" \70 --references-json "/path/to/results/<experiment>/analysis/reference_values.json" \71 --run-plan-json "/path/to/results/<experiment>/<experiment-safe-name>_run_plan.json" \72 --run-plan "/path/to/results/<experiment>/<experiment-safe-name>_run_plan.md" \73 --output-json "/path/to/results/<experiment>/results_interpretation.json" \74 --output-markdown "/path/to/results/<experiment>/results_interpretation.md" \75 --output-unresolved "/path/to/results/<experiment>/results_interpretation_unresolved.md"76```7778Reference staging helper before the interpretation pass:7980```bash81python3 /root/.codex/skills/course-lab-results-interpretation/scripts/stage_reference_values.py \82 --handout-sections-markdown "/path/to/results/<experiment>/notes/sections.md" \83 --handout-sections-json "/path/to/results/<experiment>/notes/sections.json" \84 --processed-data-json "/path/to/results/<experiment>/analysis/processed_data.json" \85 --seed-references-json "/path/to/results/<experiment>/analysis/reference_seed_values.json" \86 --search-spec-json "/path/to/results/<experiment>/analysis/reference_search_spec.json" \87 --approved-literature-json "/path/to/results/<experiment>/analysis/approved_literature.json" \88 --output-json "/path/to/results/<experiment>/analysis/reference_values.json" \89 --output-unresolved "/path/to/results/<experiment>/analysis/reference_values_unresolved.md"90```9192Recommended `references-json` shape when justification needs multiple lanes:9394```json95{96 "comparison_requirements": {97 "required_bases": ["internet_reference", "theoretical_computation"],98 "optional_bases": ["handout_standard"]99 },100 "references": [101 {102 "name": "youngs_modulus",103 "label": "Handout stainless reference",104 "value": 1.95e11,105 "unit": "Pa",106 "comparison_basis": "handout_standard",107 "source": "notes/sections.md:157"108 },109 {110 "name": "youngs_modulus",111 "label": "Published alloy reference",112 "value": 2.00e11,113 "unit": "Pa",114 "comparison_basis": "internet_reference",115 "source": "https://example.org/material-data"116 },117 {118 "name": "youngs_modulus",119 "label": "Beam-model inversion",120 "value": 2.01e11,121 "unit": "Pa",122 "comparison_basis": "theoretical_computation",123 "source": "analysis/theory_checks.json:youngs_modulus"124 }125 ]126}127```128129## Workflow1301311. Confirm that processed-data artifacts already exist.1322. Read the normalized handout first.1333. Read optional handout JSON only when handout Markdown is absent.1344. Read processed-data JSON as the primary data evidence base.1355. Read optional processed-data Markdown only as a consistency check against the JSON artifact.1366. Gather justification evidence for the processed results that need checking.1377. Prefer running `/root/.codex/skills/course-lab-results-interpretation/scripts/stage_reference_values.py` before the interpretation pass when internet-reference staging is needed.1388. Read optional plot manifests, modeling outputs, references, run-plan expectations, and confirmed run-plan JSON obligations when they exist.1399. For each important processed result, compare against:140 - handout standard/example values when the handout provides them141 - internet references gathered from credible sources with preserved links142 - relevant theoretical comparison values or upstream theory artifacts14310. When `comparison_obligations` are confirmed upstream, use them to drive primary lanes such as `theory_vs_data`, `simulation_vs_data`, and `literature_report_vs_data`.14411. Build a result inventory before writing interpretation notes.14512. Build explicit `comparison_records` across handout expectations, simulation outputs, handout standards, internet references, theory values, and approved literature values when those lanes are supported.14613. Emit `agent_proposed_key_results` and `candidate_literature_sources` for extra results that still need confirmation; keep those proposals artifact-only and pending until the user marks them `approved`, `rejected`, or `needs_revision`.14714. Emit artifact-only JSON and Markdown outputs for downstream consumers.14815. Keep unresolved notes explicit when simulation or justification lanes are missing, evidence conflicts, or expected result families are still absent.149150## Quick Reference151152### Contract Notes153154- Use local `/root/.codex/skills/course-lab-results-interpretation/scripts/build_results_interpretation.py` as the main synthesis entrypoint.155- Use local `/root/.codex/skills/course-lab-results-interpretation/scripts/stage_reference_values.py` to stage `reference_values.json` by merging local handout/theory seeds with live internet search results.156- Keep runtime dependencies local to `/root/.codex/skills/course-lab-results-interpretation/`.157- Read the normalized handout first and treat it as required interpretation context.158- Treat processed-data JSON as a required base input.159- Prefer normalized handout Markdown first. Fall back to normalized handout JSON only when Markdown is absent.160- Treat processed-data Markdown, plot manifests, modeling outputs, references, run-plan expectations, and confirmed `comparison_obligations` as optional supporting inputs.161- Emit artifact-only outputs:162 - `results_interpretation.json`163 - `results_interpretation.md`164 - `results_interpretation_unresolved.md`165- Include `comparison_records` in `results_interpretation.json` so handout/data/simulation/theory comparisons stay explicit instead of getting buried in prose.166- When a confirmed run-plan JSON exists, read `comparison_obligations` from it and treat those obligations as the primary comparison contract.167- Emit `agent_proposed_key_results` when interpretation discovers extra comparison-worthy results that still need user confirmation.168- Mark proposals explicitly with states such as `pending_user`, and keep only later `approved` proposals eligible for promotion into downstream reference artifacts.169- Emit `candidate_literature_sources` only for proposal paths; do not silently promote those sources into the confirmed comparison set.170- Prefer one reference artifact that can hold multiple entries per processed result, distinguished by `comparison_basis` such as `handout_standard`, `internet_reference`, and `theoretical_computation`.171- Preserve approved literature promotion with explicit `comparison_basis: literature_report` and `lane: literature_report_vs_data`.172- When internet references are used, preserve the concrete source link and enough citation metadata for later attribution.173- Use `comparison_requirements` in `references-json` when a run should explicitly require some justification lanes, for example `internet_reference` and `theoretical_computation`.174- If theory or reference support is missing, still emit partial interpretation artifacts when the remaining lanes stay honest.175- If a required justification lane is missing for a processed result, keep that gap explicit in unresolved output instead of silently downgrading the check.176- If the handout expects simulation comparison and modeling artifacts are missing, keep that gap visible in unresolved output instead of downgrading it silently.177- Keep unresolved comparison gaps, conflicting evidence, and missing expected result families visible instead of inventing stronger conclusions.178179| Situation | Action |180|---|---|181| Normalized handout exists and processed data exists | Read the normalized handout first before interpreting the data |182| Processed data exists but no references exist | Emit a partial interpretation artifact and record unresolved justification gaps |183| A result such as Young's modulus or a characteristic frequency needs justification | Seek a handout value if present, search the internet for a credible comparison source, and include a theory-based comparison value when available |184| Plot manifest exists | Mark matching result inventory entries as `plotted` |185| Modeling outputs exist | Compare matching simulation outputs against data and add explicit comparison records |186| Handout says simulation comparison is required but no modeling result exists | Emit an unresolved simulation-comparison gap |187| `references-json` includes multiple entries for one result | Emit one comparison record per `comparison_basis` instead of collapsing them into one generic reference lane |188| Confirmed run-plan JSON includes `comparison_obligations` | Treat those obligations as the source of truth for primary comparison lanes |189| Interpretation finds an extra qualitative or literature-backed result | Emit it in `agent_proposed_key_results` with `pending_user` instead of silently promoting it |190| Approved literature metadata exists upstream | Promote only the approved entries into the canonical reference artifact with explicit literature lanes |191| `comparison_requirements` demands a lane that is absent | Emit an unresolved missing-justification note for that result |192| Processed-data JSON and Markdown disagree | Record an unresolved conflict instead of choosing silently |193| Run plan names a missing result family | Emit a completeness warning in the output artifacts |194| Downstream flow needs report prose | Hand off these artifacts to later discussion or final staging instead of mutating `main.tex` here |195196## Boundary Rules197198- This skill starts only after normalized handout artifacts and processed-data artifacts are available.199- This skill owns artifact-only interpretation outputs, not report mutation.200- This skill does not run modeling, generate discussion ideas, or perform final QC.201- This skill does not rerun upstream raw-data processing or full modeling jobs, but it may compute lightweight comparison deltas once the comparison values already exist.202- Keep all runtime tool usage local to this standalone folder.203- Do not mutate `main.tex` or any direct report file from this skill.204- Do not write handout, internet, theory, or simulation comparisons as confirmed when the supporting values are missing.205- Do not silently move `pending_user` proposal items into the confirmed comparison set.206- Do not promote candidate literature sources unless the parent flow has marked them `approved`.207- Do not skip the handout. Read the normalized handout first.208209## Common Mistakes210211- Reaching back into the parent skill or sibling skill folders instead of using the local copied script.212- Interpreting processed data before reading the handout.213- Turning missing handout/internet/theory lanes into implicit agreement language.214- Treating simulation outputs as decorative source hints instead of explicit comparison targets.215- Collapsing handout standards, internet references, and theory calculations into one vague comparison bucket.216- Folding discussion generation into the interpretation layer.217- Treating processed-data Markdown as a silent override instead of a consistency check.218- Letting the skill mutate report files instead of staying artifact-only.219220## Resources221222- `scripts/common.py`: local helpers for JSON and text I/O223- `scripts/build_results_interpretation.py`: local interpretation builder224- `scripts/stage_reference_values.py`: local helper that searches the web and stages `reference_values.json`225- `tests/baseline_failures.md`: RED-phase failure record for this skill226- `tests/test_skill_package.py`: standalone package checks227- `tests/test_build_results_interpretation.py`: CLI behavior checks228- `tests/test_stage_reference_values.py`: staged reference helper checks