coldpass

aulasneo/tutor-contrib-panorama

GitHub ↗ · How this check works

Per-setup public labels: Linux / Haiku: Works

Static status badge · SVG · read-only JSON. Embed with ![Coldpass status](https://coldpass.dev/badge/aulasneo--tutor-contrib-panorama.svg).

data

Works

The recorded run passed on 1 setup.

Answers apply to each recorded setup, revision and operation. Earlier observations remain in Run details.

Tested on Linux
PlatformHaikuLuna
Linuxyes

Linux / Haiku 5.5: yes · Oct 27, 2026 · cfd349828144 · claude-code / 2.1.310 (Claude Code)
Recorded operation: tutor config printvalue PANORAMA_MODE

Does what it says
4 of 4 claims checked out
  • Default mode is DEMO: Real input produced the expected result: DEMO

    Source: Since 16.3.0, the default mode of Panorama is `DEMO`.

    Input: tutor config printvalue PANORAMA_MODE

    Expected: DEMO

    Command: tutor config printvalue PANORAMA_MODE

    Observed: DEMO

  • MFE port default is 2100: Real input produced the expected result: 2100

    Source: | `PANORAMA_MFE_PORT` | `2100` | Internal port of the Panorama MFE |

    Input: tutor config printvalue PANORAMA_MFE_PORT

    Expected: 2100

    Command: tutor config printvalue PANORAMA_MFE_PORT

    Observed: 2100

  • Base prefix default is openedx: Real input produced the expected result: openedx

    Source: | `PANORAMA_BASE_PREFIX` | `openedx` | Directory inside the `PANORAMA_BUCKET` to store the raw data |

    Input: tutor config printvalue PANORAMA_BASE_PREFIX

    Expected: openedx

    Command: tutor config printvalue PANORAMA_BASE_PREFIX

    Observed: openedx

  • Hourly schedule at a random minute: Real input produced the expected result: 54 * * * *

    Source: Hourly dataset updates at a random minute

    Input: tutor config printvalue PANORAMA_CRONTAB

    Expected: 54 * * * *

    Command: tutor config printvalue PANORAMA_CRONTAB

    Observed: 54 * * * *

MCP
No
Local or hosted
both local and hosted
Both a local install and a hosted service
Needs keys or browser
None seen
Maintained
Slow
slow: last commit 0 days ago; 22 commits and 3 merged PRs in 90 days; 0 open issues, 0 open PRs; 0 of 6 recent threads got a maintainer reply; latest release 2026-08-11

Last commit Oct 27, 2026

Setup time
5 min 50 s
5 min 50 s to a working result
Issue
none found in recorded check
Examples
3 of 3 ran as expected
  • Unit contract tests pass: command completed successfully

    Source: Makefile test-unit

    Input: make test-unit PYTHON=<guest-path>

    Expected: pytest reports no failures

    Command: make test-unit PYTHON=<guest-path>

    Observed: <guest-path> -m pytest tests ============================= test session starts ============================== platform linux -- Python 3.12.3, pytest-9.1.1, pluggy-1.7.0 rootdir: <guest-path> configfile: pyproject.toml plugins: platformdirs-4.13.6 collected 28 items tests/test_fluentbit.py ssss [ 14%] tests/test_verawood.py ........................ [100%] ======================== 24 passed, 4 skipped in 1.96s =========================

  • Navigation tests pass on generated MFE config: command completed successfully

    Source: Makefile test-navigation

    Input: make test-navigation PYTHON=<guest-path>

    Expected: node tests pass

    Command: make test-navigation PYTHON=<guest-path>

    Observed: imports have no duplicate local bindings --- duration_ms: 8.072928 type: 'test' ... # Subtest: generated frontend-base configuration has no duplicate local bindings ok 4 - generated frontend-base configuration has no duplicate local bindings --- duration_ms: 8.606376 type: 'test' ... 1..4 # tests 4 # suites 0 # pass 4 # fail 0 # cancelled 0 # skipped 0 # todo 0 # duration_ms 5226.247804 npm warn deprecated [email protected]: Use @exodus/bytes instead for a more spec-conformant and faster implementation ⚠️ Failed to enable plugin 'indigo': plugin 'indigo' is not installed.

  • Formatting check passes: command completed successfully

    Source: Makefile test-format

    Input: make test-format PYTHON=<guest-path>

    Expected: black leaves files unchanged

    Command: make test-format PYTHON=<guest-path>

    Observed: black --check --diff --exclude templates ./tutorpanorama All done! ✨ 🍰 ✨ 3 files would be left unchanged.

Cycles
1 of 1 ran as expected
  • Scheduled extraction cron line is rendered for non-DEMO modes: Triggered one cycle by hand (rendered crontab in CUSTOM mode via tutor config save (no ELT run; no AWS/MySQL available); normal trigger: PANORAMA_CRONTAB hourly cron): Configuration saved to <guest-path> Environment generated in <guest-path>

    Source: tutorpanorama/templates/panorama/apps/panorama-elt/crontab

    Input: TUTOR_ROOT=<guest-path> with PANORAMA_MODE=CUSTOM

    Expected: Environment generated with the cron line

    Command: tutor config save

    Observed: Configuration saved to <guest-path> Environment generated in <guest-path>

Evidence
README behavior checked
Agent interfaces
CLI
CLI

Observed interfaces were exercised by the checker. Documentation alone does not confirm compatibility.

Tested with
Claude Code / Haiku 5.5
  • Linux: Claude Code / Haiku 5.5 · agent 2.1.310 (Claude Code) · Checked operation passed · Oct 27, 2026 on cfd349828144

Each entry describes its recorded operation and source revision.

Safety
No unexpected network or file activity found in these checks

No problems traced to this repository code in these checks; a short run cannot prove safety.

Reviewed as expected for a test run: attempted writes that failed, so nothing was written.

Full event, path and process lists for each observed setup:

Repair history and test corrections
Run details

Haiku 5.5

Native agent · Checked operation passed

Checked operation tutor config printvalue PANORAMA_MODE

Agent-reported scope: Install the Panorama Tutor plugin from this checkout, enable it, generate the Tutor configuration/environment, and read back Panorama settings with the Tutor CLI; run the Makefile's unit, navigation, format, lint and type checks.

Run details
run
aulasneo--tutor-contrib-panorama-claude-haiku-5-5-1793136391852389588
date
Oct 27, 2026
time to working
350.0s
product hosting / execution
Local command in the guest
recorded operation scope
product operation
model
claude-haiku-5-5
agent / version
claude-code / 2.1.310 (Claude Code)
platform
linux
reported cost
$0.018744
Recorded source
https://github.com/aulasneo/tutor-contrib-panorama
Backend
hyperv
Tool transport
mcp-assigned-vm
Requested source pin (not an observed revision)
{"commit": "cfd349828144e7e61da9bffbf8a90b45ab139f84", "url": "https://github.com/aulasneo/tutor-contrib-panorama"}
Test version
readme-d5b140d3c0f8b95c2dd6fe6fc381a303cacb92679582c22317d8e78b572f0cf2
revision
cfd349828144e7e61da9bffbf8a90b45ab139f84
Current diagnosis: test · resolved

native Claude returned a different model

Repair record fix-7e39daba685cebc1e6a1 · current status JSON. Original run outcomes remain unchanged.

Failed run: aulasneo/tutor-contrib-panorama · Oct 27, 2026 · Our test failed; no repo verdict.

Test-repair rerun: aulasneo/tutor-contrib-panorama · Oct 27, 2026 · Checked operation passed.

Double-checks failed run: aulasneo/tutor-contrib-panorama · Oct 27, 2026.

Fix: fix-7e39daba685cebc1e6a1.

Safety: No problems traced to this repository code in these checks.

No problems traced to this repository code in these checks.

Reviewed as expected for a test run: attempted writes that failed, so nothing was written.

OSV scanned supported lockfiles; unpinned dependencies and unsupported formats are outside this check.

A short run cannot establish that code is safe.

Connections show IP addresses; proxies can hide the final hostname.

Tracing covers dispatched commands and their children, not the whole OS; guest root can interfere with tracing.

Full safety evidence →

Answers recorded for this run
  • Default mode is DEMO: Real input produced the expected result: DEMO

    Source: Since 16.3.0, the default mode of Panorama is `DEMO`.

    Input: tutor config printvalue PANORAMA_MODE

    Expected: DEMO

    Command: tutor config printvalue PANORAMA_MODE

    Observed: DEMO

  • MFE port default is 2100: Real input produced the expected result: 2100

    Source: | `PANORAMA_MFE_PORT` | `2100` | Internal port of the Panorama MFE |

    Input: tutor config printvalue PANORAMA_MFE_PORT

    Expected: 2100

    Command: tutor config printvalue PANORAMA_MFE_PORT

    Observed: 2100

  • Base prefix default is openedx: Real input produced the expected result: openedx

    Source: | `PANORAMA_BASE_PREFIX` | `openedx` | Directory inside the `PANORAMA_BUCKET` to store the raw data |

    Input: tutor config printvalue PANORAMA_BASE_PREFIX

    Expected: openedx

    Command: tutor config printvalue PANORAMA_BASE_PREFIX

    Observed: openedx

  • Hourly schedule at a random minute: Real input produced the expected result: 54 * * * *

    Source: Hourly dataset updates at a random minute

    Input: tutor config printvalue PANORAMA_CRONTAB

    Expected: 54 * * * *

    Command: tutor config printvalue PANORAMA_CRONTAB

    Observed: 54 * * * *

Examples

  • Unit contract tests pass: command completed successfully

    Source: Makefile test-unit

    Input: make test-unit PYTHON=<guest-path>

    Expected: pytest reports no failures

    Command: make test-unit PYTHON=<guest-path>

    Observed: <guest-path> -m pytest tests ============================= test session starts ============================== platform linux -- Python 3.12.3, pytest-9.1.1, pluggy-1.7.0 rootdir: <guest-path> configfile: pyproject.toml plugins: platformdirs-4.13.6 collected 28 items tests/test_fluentbit.py ssss [ 14%] tests/test_verawood.py ........................ [100%] ======================== 24 passed, 4 skipped in 1.96s =========================

  • Navigation tests pass on generated MFE config: command completed successfully

    Source: Makefile test-navigation

    Input: make test-navigation PYTHON=<guest-path>

    Expected: node tests pass

    Command: make test-navigation PYTHON=<guest-path>

    Observed: imports have no duplicate local bindings --- duration_ms: 8.072928 type: 'test' ... # Subtest: generated frontend-base configuration has no duplicate local bindings ok 4 - generated frontend-base configuration has no duplicate local bindings --- duration_ms: 8.606376 type: 'test' ... 1..4 # tests 4 # suites 0 # pass 4 # fail 0 # cancelled 0 # skipped 0 # todo 0 # duration_ms 5226.247804 npm warn deprecated [email protected]: Use @exodus/bytes instead for a more spec-conformant and faster implementation ⚠️ Failed to enable plugin 'indigo': plugin 'indigo' is not installed.

  • Formatting check passes: command completed successfully

    Source: Makefile test-format

    Input: make test-format PYTHON=<guest-path>

    Expected: black leaves files unchanged

    Command: make test-format PYTHON=<guest-path>

    Observed: black --check --diff --exclude templates ./tutorpanorama All done! ✨ 🍰 ✨ 3 files would be left unchanged.

Cycles

  • Scheduled extraction cron line is rendered for non-DEMO modes: Triggered one cycle by hand (rendered crontab in CUSTOM mode via tutor config save (no ELT run; no AWS/MySQL available); normal trigger: PANORAMA_CRONTAB hourly cron): Configuration saved to <guest-path> Environment generated in <guest-path>

    Source: tutorpanorama/templates/panorama/apps/panorama-elt/crontab

    Input: TUTOR_ROOT=<guest-path> with PANORAMA_MODE=CUSTOM

    Expected: Environment generated with the cron line

    Command: tutor config save

    Observed: Configuration saved to <guest-path> Environment generated in <guest-path>

Local or hosted: both

What the agent did

Install the Panorama Tutor plugin from this checkout, enable it, generate the Tutor configuration/environment, and read back Panorama settings with the Tutor CLI; run the Makefile's unit, navigation, format, lint and type checks.

cd <guest-path> && pwd && ls -la && id -u && python3 --version && cat README.md | head -300
cd <guest-path> && sed -n 300,500p README.md; echo ---; cat pyproject.toml; cat Makefile; ls tests docs .coldpass; cat .gitignore; which tutor docker; ls /inputs 2>/dev/null
cd <guest-path> && ls tutorpanorama tests; cat .bumpversion.cfg | head -5; cat tutorpanorama/__about__.py; (python3 -m venv --help >/dev/null 2>&1 && echo venv_ok || echo venv_missing); echo CDP=$CDP_URL $<env-var>; which node npm docker git
cd <guest-path> && python3 -m venv <guest-path> && <guest-path> install --upgrade pip -q && cd <guest-path> && <guest-path> install -e '.[dev]' 2>&1 | tail -15; echo EXIT=$?
export TUTOR_ROOT=<guest-path>; export PATH=<guest-path>; cd <guest-path> && tutor plugins enable mfe panorama 2>&1 | tail -20; echo EXIT=$?; tutor config save 2>&1 | tail -20; echo EXIT2=$?; tutor plugins list 2>&1 | tail -20; ls $TUTOR_ROOT/env/plugins/mfe/build/mfe 2>/dev/null
export TUTOR_ROOT=<guest-path>; export PATH=<guest-path>; cd <guest-path> && grep -i panorama $TUTOR_ROOT/config.yml | head -30; echo ---; grep -n -i 'PANORAMA_MODE\|mode' $TUTOR_ROOT/config.yml | head; echo ---; python3 -m pytest tests -q 2>&1 | tail -8; echo PYTEST_EXIT=$?
export TUTOR_ROOT=<guest-path>; export PATH=<guest-path>; cd <guest-path> && tutor config printvalue PANORAMA_CRONTAB; echo EXIT=$?; tutor config printvalue PANORAMA_MODE; echo EXIT=$?; tutor config printvalue PANORAMA_MFE_PORT; echo EXIT=$?; tutor config printvalue PANORAMA_BASE_PREFIX; echo EXIT=$?; tutor config printvalue PANORAMA_DATALAKE_DATABASE; echo EXIT=$?; grep -n 'MODE\|DEMO' tutorpanorama/plugin.py | head -20
export TUTOR_ROOT=<guest-path>; export PATH=<guest-path>; export NODE_USE_ENV_PROXY=1; cd <guest-path> && node --version && npm --version && npm ci --ignore-scripts 2>&1 | tail -5; echo NPM_EXIT=$?; export PANORAMA_GENERATED_ENV="$TUTOR_ROOT/env/plugins/mfe/build/mfe/env.config.jsx"; ls -la "$PANORAMA_GENERATED_ENV" && node --test tests/navigation.cjs 2>&1 | tail -15; echo NAV_EXIT=$?; grep -rn -i 'cron' tutorpanorama/templates | head -20
export TUTOR_ROOT=<guest-path>; export PATH=<guest-path>; cd <guest-path> && find $TUTOR_ROOT/env -path '*panorama-elt*' -name crontab | head; f=$(find $TUTOR_ROOT/env -path '*panorama-elt*' -name crontab | head -1); cat "$f"; echo ---; export PYTHON=<guest-path>; make test-format 2>&1 | tail -3; echo FMT=$?; make test-lint 2>&1 | tail -3; echo LINT=$?; make test-types 2>&1 | tail -3; echo TYPES=$?
export TUTOR_ROOT=<guest-path>; cd <guest-path> && ls -la $TUTOR_ROOT/env/plugins/panorama/apps/panorama-elt/; wc -c $TUTOR_ROOT/env/plugins/panorama/apps/panorama-elt/crontab; cat tutorpanorama/templates/panorama/apps/panorama-elt/crontab; echo; grep -rn 'crontab' tutorpanorama/plugin.py | head
export PATH=<guest-path>; export TUTOR_ROOT=<guest-path>; cd <guest-path> && tutor plugins enable mfe panorama >/dev/null 2>&1; tutor config save --set PANORAMA_MODE=CUSTOM 2>&1 | tail -3; echo EXIT=$?; tutor config printvalue PANORAMA_MODE; tutor config printvalue PANORAMA_CRONTAB; cat $TUTOR_ROOT/env/plugins/panorama/apps/panorama-elt/crontab; echo ---; tutor config printvalue PANORAMA_CRONTAB >/dev/null; export TUTOR_ROOT=<guest-path>; tutor config printvalue PANORAMA_MODE
cd <guest-path> && mkdir -p .coldpass && cat > .coldpass/probe.json <<'EOF'
{"kind":"cli","argv":["tutor","config","printvalue","PANORAMA_MODE"],"cwd":"<guest-path>","env":{"TUTOR_ROOT":"<guest-path>","PATH":"<guest-path>"},"expected_text":"DEMO"}
EOF
cat > .coldpass/claims.json <<'EOF'
[
{"kind":"claim","claim":"Default mode is DEMO","source":"Since 16.3.0, the default mode of Panorama is `DEMO`.","input":"tutor config printvalue PANORAMA_MODE","expected":"DEMO","probe_kind":"cli","argv":["tutor","config","printvalue","PANORAMA_MODE"],"env":{"TUTOR_ROOT":"<guest-path>","PATH":"<guest-path>"},"expected_text":"DEMO","cwd":"<guest-path>"},
{"kind":"claim","claim":"MFE port default is 2100","source":"| `PANORAMA_MFE_PORT` | `2100` | Internal port of the Panorama MFE |","input":"tutor config printvalue PANORAMA_MFE_PORT","expected":"2100","probe_kind":"cli","argv":["tutor","config","printvalue","PANORAMA_MFE_PORT"],"env":{"TUTOR_ROOT":"<guest-path>","PATH":"<guest-path>"},"expected_text":"2100","cwd":"<guest-path>"},
{"kind":"claim","claim":"Base prefix default is openedx","source":"| `PANORAMA_BASE_PREFIX` | `openedx` | Directory inside the `PANORAMA_BUCKET` to store the raw data |","input":"tutor config printvalue PANORAMA_BASE_PREFIX","expected":"openedx","probe_kind":"cli","argv":["tutor","config","printvalue","PANORAMA_BASE_PREFIX"],"env":{"TUTOR_ROOT":"<guest-path>","PATH":"<guest-path>"},"expected_text":"openedx","cwd":"<guest-path>"},
{"kind":"claim","claim":"Hourly schedule at a random minute","source":"Hourly dataset updates at a random minute","input":"tutor config printvalue PANORAMA_CRONTAB","expected":"54 * * * *","probe_kind":"cli","argv":["tutor","config","printvalue","PANORAMA_CRONTAB"],"env":{"TUTOR_ROOT":"<guest-path>","PATH":"<guest-path>"},"expected_text":"54 * * * *","cwd":"<guest-path>"}
]
EOF
cat > .coldpass/examples.json <<'EOF'
[
{"kind":"example","claim":"Unit contract tests pass","source":"Makefile test-unit","input":"make test-unit PYTHON=<guest-path>","expected":"pytest reports no failures","argv":["make","test-unit","PYTHON=<guest-path>"],"cwd":"<guest-path>","env":{"PATH":"<guest-path>"},"expected_text":"passed"},
{"kind":"example","claim":"Navigation tests pass on generated MFE config","source":"Makefile test-navigation","input":"make test-navigation PYTHON=<guest-path>","expected":"node tests pass","argv":["make","test-navigation","PYTHON=<guest-path>"],"cwd":"<guest-path>","env":{"PATH":"<guest-path>","NODE_USE_ENV_PROXY":"1"},"expected_text":"# fail 0"},
{"kind":"example","claim":"Formatting check passes","source":"Makefile test-format","input":"make test-format PYTHON=<guest-path>","expected":"black leaves files unchanged","argv":["make","test-format","PYTHON=<guest-path>"],"cwd":"<guest-path>","env":{"PATH":"<guest-path>"},"expected_text":"would be left unchanged"}
]
EOF
cat > .coldpass/cycles.json <<'EOF'
{"detected":true,"checks":[{"claim":"Scheduled extraction cron line is rendered for non-DEMO modes","source":"tutorpanorama/templates/panorama/apps/panorama-elt/crontab","quote":"{% if PANORAMA_MODE != 'DEMO' %}","schedule":"PANORAMA_CRONTAB hourly cron","method":"rendered crontab in CUSTOM mode via tutor config save (no ELT run; no AWS/MySQL available)","input":"TUTOR_ROOT=<guest-path> with PANORAMA_MODE=CUSTOM","expected":"Environment generated with the cron line","kind":"cli","argv":["tutor","config","save"],"cwd":"<guest-path>","env":{"TUTOR_ROOT":"<guest-path>","PATH":"<guest-path>"},"expected_text":"Environment generated in"}]}
EOF
for f in probe claims examples cycles; do python3 -I -m json.tool .coldpass/$f.json >/dev/null && echo "$f ok"; done; export TUTOR_ROOT=<guest-path>; cd <guest-path> && PATH=<guest-path> make test-unit PYTHON=<guest-path> 2>&1 | tail -2
cd <guest-path> && ls <guest-path> /inputs 2>&1 | head; <env-var>=<guest-path> python3 -I <guest-path> --validate --replay 2>&1 | tail -60; echo CHECK_EXIT=$?
cd <guest-path> && cat > .coldpass/report.json <<'EOF'
{"outcome":"working","fault_owner":null,"operation":"Install the Panorama Tutor plugin from this checkout, enable it, generate the Tutor configuration/environment, and read back Panorama settings with the Tutor CLI; run the Makefile's unit, navigation, format, lint and type checks.","operation_scope":"Linux guest (Ubuntu, Python 3.12.3, Node v22.23.4, npm 10.9.9). Tutor 22.0.3 and tutor-mfe 22.1.1 installed via pip. No Docker, so no image build or running Open edX/Panorama stack. The ELT extraction job itself was not run (needs panorama-elt image, AWS, MySQL/Mongo). DEMO mode is the default; the scheduled extraction line only renders for non-DEMO modes.","steps":["python3 -m venv <guest-path> && <guest-path> install --upgrade pip","<guest-path> install -e '.[dev]'  (README: 'For an unpublished checkout, install with `pip install -e .`')","TUTOR_ROOT=<guest-path> tutor plugins enable mfe panorama","TUTOR_ROOT=<guest-path> tutor config save","TUTOR_ROOT=<guest-path> tutor config printvalue PANORAMA_MODE  -> DEMO","tutor config printvalue PANORAMA_MFE_PORT -> 2100; PANORAMA_BASE_PREFIX -> openedx; PANORAMA_CRONTAB -> 54 * * * *","make test-unit (24 passed, 4 skipped)","npm ci --ignore-scripts; make test-navigation (4 passed)","make test-format, make test-lint, make test-types (all pass)","TUTOR_ROOT=<guest-path> tutor config save --set PANORAMA_MODE=CUSTOM -> rendered crontab '4 * * * * /usr/local/bin/python /panorama-elt/panorama.py ... extract-and-load --all'"],"deviations":["README's `pip install --pre 'tutor-contrib-panorama>=22,<23'` is for the published package; used the README's documented `pip install -e .` for the unpublished checkout (with [dev] extras from the Makefile).","Used `tutor plugins enable mfe panorama` (Makefile test-tutor form) instead of only `tutor plugins enable panorama`, because the MFE plugin is required for the navigation test.","Did not run `tutor images build openedx|mfe` or `tutor local restart` (README install steps): requires Docker and a large image build, not available in this guest.","Did not run the Panorama ELT extraction; the cycle check renders the crontab in CUSTOM mode via `tutor config save` as a substitute for a real scheduled run, with no AWS/MySQL.","Tutor prints a harmless warning 'Failed to enable plugin indigo: plugin indigo is not installed' from its default plugin list.","No .git metadata in the workspace; the git init/fetch pin steps were not needed for the documented commands, so I did not verify the snapshot against the pinned commit cfd349828144e7e61da9bffbf8a90b45ab139f84."],"stuck_step":null,"main_blocker":null,"plain_failure":null,"suggested_fix":"None for the tested paths. Docker-based image build and a real extraction run remain untested because they need Docker and AWS/database access."}
EOF
python3 -I -m json.tool .coldpass/report.json >/dev/null && echo report_ok; <env-var>=<guest-path> python3 -I <guest-path> --validate --replay 2>&1 | head -c 300; echo; ls -la .coldpass

No product verdict. Run record.

No product verdict. Run record.