Skip to content

refactor(qc): remove ESGF branding from remaining 34 files (#1629 Phase 4)#1654

Merged
jsboige merged 1 commit into
mainfrom
feature/genericize-esgf-1629-p4
May 28, 2026
Merged

refactor(qc): remove ESGF branding from remaining 34 files (#1629 Phase 4)#1654
jsboige merged 1 commit into
mainfrom
feature/genericize-esgf-1629-p4

Conversation

@jsboige
Copy link
Copy Markdown
Owner

@jsboige jsboige commented May 28, 2026

Summary

Phase 4 of #1629 ESGF genericization — finalizes the remaining 34 files across 9 domains. PR created on behalf of po-2024 (rate-limited at push time).

  • Root config (2): .gitignore, catalog-drift.yml
  • Root docs (4): README.md, STABLE_SNAPSHOT.md, MyIA.AI.Notebooks/README.md, teaching-context.md
  • QC Python notebooks (15): markdown source cells
  • QC project research (7): titles, class names (ESGFHARRVKelly → PartnerHARRVKelly etc)
  • Kit-transitoire (3): ESGF Kit → Partner Course Kit
  • ML-Training-Pipeline docs (1), GenAI doc (1), Scripts (2), .gitignore obj/bin rule (1)

Triage decisions (per dispatch ai-01)

Category (b) PRESERVED (9 files): historical audits, catalog_enrichment.json (QC Cloud project IDs), forensic_results.json, slide JSONs — historical context kept.

Category (c) NO ACTION (10 files): papermill metadata (5), base64 false positives (5).

#1629 generification coverage

Test plan

  • No blind replace on historical audits
  • No replace on QC Cloud project IDs
  • All triage decisions documented
  • CI catalog-drift verification (auto)

Author: po-2024 (commit 54fc36f). PR creation by ai-01 after rate-limit reset.

🤖 Generated with Claude Code

Phase 4 of ESGF generification. Triaged 66 remaining ESGF files into
3 categories and edited category (a) only:

Category (a) — REPLACED (34 files):
- Root config: .gitignore, catalog-drift.yml
- Root docs: README.md, STABLE_SNAPSHOT.md, MyIA.AI.Notebooks/README.md
- 15 QC Python notebooks (markdown source cells)
- 7 QC project research notebooks (titles, class names, descriptions)
- 3 kit-transitoire research notebooks
- 1 ML-Training-Pipeline research notebook
- 1 GenAI Vibe-Coding doc
- 1 nested .vscode/launch.json
- 2 scripts (audit_projects.py + test)
- docs/teaching-context.md

Category (b) — PRESERVED (9 files):
- Historical audit reports in docs/audits/ (dated, factual)
- catalog_enrichment.json (real QC Cloud project names as identifiers)
- qc_strategies_catalog.md (cloud org name references)
- forensic_results.json (historical path snapshots)
- 2 slide extracted JSONs (external repo URLs)

Category (c) — NO ACTION (10 files):
- 5 notebooks with ESGF only in papermill metadata (re-execute to fix)
- 5 notebooks with ESGF only in base64 audio/image blobs (false positives)

Also added obj/ and bin/ to .gitignore for lean-workspace.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@github-actions
Copy link
Copy Markdown

Notebook PR Validation: FAIL

  • Notebooks checked: 25
  • Code cells validated: 325
  • Result: 3 notebook(s) with violations

Checks: H.1 (no errors), H.3 (execution_count), C.1 (no banned patterns)
Non-Python kernels (.NET/Lean): C.1 + errors only (execution_count advisory)
QuantConnect notebooks: C.1 + errors only (require QC Cloud for execution)

Violations

MyIA.AI.Notebooks/QuantConnect/partner-course-quant-trading/kit-transitoire/01-ML-RandomForest/research.ipynb (11 cells, python3)

  • cell 5: has error output — ValueError
  • cell 8: has error output — ValueError
  • cell 9: has error output — NameError
  • cell 11: has error output — NameError
  • cell 13: has error output — NameError

MyIA.AI.Notebooks/QuantConnect/partner-course-quant-trading/kit-transitoire/02-ML-XGBoost/research.ipynb (10 cells, python3)

  • cell 6: has error output — ValueError
  • cell 8: has error output — NameError
  • cell 9: has error output — NameError
  • cell 11: has error output — NameError
  • cell 14: has error output — KeyError

MyIA.AI.Notebooks/QuantConnect/partner-course-quant-trading/kit-transitoire/03-Framework-Composite/research.ipynb (9 cells, python3)

  • cell 4: has error output — ValueError
  • cell 6: has error output — KeyError
  • cell 8: has error output — TypeError
  • cell 10: has error output — TypeError
  • cell 12: has error output — NameError

How to fix

# Re-execute the notebook
python scripts/notebook_tools/notebook_tools.py execute <path>

Copy link
Copy Markdown
Collaborator

@clusterManager-Myia clusterManager-Myia left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[NanoClaw] Review of PR #1654

Summary

Phase 4 of #1629 — removes ESGF branding from the final 34 files across config, docs, QC notebooks, project research, kit-transitoire, and .gitignore. This completes the ESGF genericization effort across the entire repo.

Findings

All sampled changes (8 files across 5 domains) are clean, mechanical ESGF-to-Partner replacements:

  • Config (catalog-drift.yml:39): EXCLUDE_PED set updated from 'ESGF' to 'partner-course' — correct, matches the directory rename from Phase 2.
  • Root docs (README.md:138,175): Directory references and descriptions updated. Tree indentation preserved.
  • QC notebooks (QC-Py-01:49, QC-Py-14:78, QC-Py-10:65): Template path references ESGF-2026/templates/ consistently replaced with partner-course-quant-trading/templates/.
  • Kit-transitoire (01-ML-RandomForest:7): Title ESGF Kit replaced with Partner Course Kit.
  • Project research (HAR-RV-Kelly:7,22, Vol-GARCH-Target:7,19): Both title and class name references (ESGFHARRVKelly / ESGFGARCHVolTarget) replaced with Partner* variants consistently.
  • .gitignore: ESGF-Workspace/ renamed to partner-course-Workspace/ plus new NuGet obj/bin rules added for the renamed lean-workspace path.

No accidental removals of non-branding content detected — every removed line contains an ESGF reference.

Security

Clean. The only match on TOKEN/SECRET patterns is a pre-existing comment (# Generated secrets (security - never commit raw tokens)) in .gitignore — not new content.

Verdict

Looks good. Mechanical branding cleanup, consistently applied. No functional logic changes, no accidental deletions, no credential exposure. This completes the ESGF genericization across all phases.

Copy link
Copy Markdown
Owner Author

@jsboige jsboige left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[NanoClaw]

Branding removal across 34 files -- ESGF references replaced with partner/partner-course/partner-course-quant-trading. Overall clean, but one inconsistency worth noting.

Concerns

1. Inconsistent casing in audit_projects.py (minor)

Two ESGF patterns are replaced with different casing conventions in the same script:

  • Line 109: "ESGF-" in name"partner-" in name (lowercase)
  • Line 165: "ESGF-Framework""Partner-Framework" (capitalized)

Both patterns match the same QC project namespace. If project naming uses one convention, the other pattern won't match. The test case confirms lowercase (partner-course-2026-Validation), which means Partner-Framework on line 165 would only catch capitalized names.

Recommendation: standardize to one casing convention. If actual QC projects use lowercase partner-, change line 165 to "partner-Framework" to match.

2. .gitignore additions are functional, not purely cosmetic

The PR adds NuGet artifact ignore rules (partner-course-quant-trading/lean-workspace/**/obj/ and bin/). This is good practice but worth noting it goes beyond branding -- it's a new .gitignore entry that should be verified against the actual directory structure (the obj/ and bin/ paths may not exist yet if the lean-workspace isn't built).

What looks good

  • All 12 QC-Py notebooks: identical template path replacement (ESGF-2026/templates/partner-course-quant-trading/templates/), no code cells touched.
  • Kit transitoire notebooks: clean title-only changes.
  • Research notebooks: calibration target names updated consistently (e.g., ESGFGARCHVolTargetPartnerGARCHVolTarget).
  • Workflow, README, teaching-context, STABLE_SNAPSHOT: all path/text references updated.
  • ForexCarry: print statements updated in both output cell and code cell.
  • No secrets, no functional code changes, no notebook output integrity issues.

Copy link
Copy Markdown
Collaborator

@clusterManager-Myia clusterManager-Myia left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[NanoClaw]

Clean Phase 4 branding removal. Walked all 30 file diffs -- every replacement is a mechanical ESGF-to-generic substitution with no collateral damage.

What looks good:

  • All 30 modified files have zero ESGF references in added lines -- fully consistent.
  • Class name renames in research notebooks (ESGFHARRVKelly, ESGFGARCHVolTarget, ESGFVolEnsembleConservative -> Partner* prefix) are consistent with Phase 3a which handled the actual main.py class definitions.
  • .gitignore correctly adds NuGet obj/bin rules for the renamed directory.
  • catalog-drift.yml exclusion set updated (ESGF -> partner-course).
  • Triage decisions in the PR body are reasonable (preserving historical audits, QC Cloud project IDs).

Minor observations (not blockers):

  1. PR body claims 34 files and mentions STABLE_SNAPSHOT.md, teaching-context.md, and Scripts (2) but only 30 files appear in the diff. The 4 missing files were likely already handled in Phases 3a/3b/3c or had no ESGF references -- worth a quick body update for accuracy.
  2. QC-Py-03, QC-Py-04, and QC-Py-08 are not in the diff (no changes). If they contain ESGF references, they should be checked -- but if they simply have none, that is fine.
  3. TurnOfMonth research.ipynb uses partner-course-quant-trading in a French prose sentence where ESGF-2026 previously stood for a dashboard name. The directory reference is factually correct but reads slightly odd in context ("marquee PENDING dans le dashboard partner-course-quant-trading"). Very minor -- up to author preference.

Security: No credential leaks. The only SECRET match was in .gitignore rules blocking secrets from being committed.

Overall: straightforward branding completion, safe to merge.

Copy link
Copy Markdown
Collaborator

@clusterManager-Myia clusterManager-Myia left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[NanoClaw]

Clean Phase 4 of the ESGF debranding. Verified across all 34 files:

  • Consistency: 49 ESGF references removed, zero remaining in added lines. Replacement naming is uniform (partner-course-quant-trading for paths, Partner Course Kit for kit titles, Partner for deadline labels and class names).
  • Class name renames: ESGFHARRVKelly -> PartnerHARRVKelly, ESGFVolEnsembleConservative -> PartnerVolEnsembleConservative, ESGFGARCHVolTarget -> PartnerGARCHVolTarget -- all consistently updated in both notebook titles and calibration target references.
  • Script/test alignment: audit_projects.py patterns and test_audit_projects.py test cases updated in lockstep (ESGF-Framework -> Partner-Framework, validation project name updated).
  • Security: No credentials or tokens exposed.
  • Bonus: .gitignore adds NuGet build artifact entries for the new partner-course-quant-trading/lean-workspace path -- good proactive housekeeping.

No issues found.

Copy link
Copy Markdown
Collaborator

@clusterManager-Myia clusterManager-Myia left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[NanoClaw] Review — refactor(qc): remove ESGF branding from remaining 34 files (#1629 Phase 4)

34 fichiers, +53/-49. Rename systematique ESGF→partner/partner-course dans notebooks markdown et fichiers de config.

Verifie:

  • Toutes les substitutions sont coherentes (ESGF→partner, ESGF-2026→partner-course-quant-trading, ESGF_School→Partner)
  • Aucune modif de code — uniquement cellules markdown et texte
  • .gitignore: ajout rules NuGet obj/bin + rename ESGF-Workspace→partner-course-Workspace
  • catalog-drift.yml: EXCLUDE_PED mis a jour en consequent
  • Classes algo dans main.py (HarrvKellyAlgorithm, GarchVolTargetAlgorithm) ne contenaient pas ESGF — pas d'inconsistence
  • Security scan: aucun secret/credential expose

Pas de concern. Rename propre et complet pour la Phase 4.

Copy link
Copy Markdown
Collaborator

@clusterManager-Myia clusterManager-Myia left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[NanoClaw]

Clean text-only refactor across 34 files. No code logic changes, no output modifications, no security concerns. A few minor observations:

1. test_audit_projects.py comment mismatch (low)
The test test_partner_validation was updated from ESGF-2026-Validation to partner-course-2026-Validation. The test name now matches the partner-specific check ("partner-" in name and "Validation" in name) at audit_projects.py:112, which means it will hit the partner-specific branch, not the generic -Validation pattern. The existing comment # Matches generic "-Validation" pattern before partner-specific check is now inaccurate — this test name actually matches the partner-specific check first. Consider updating the comment or flipping the assertion to verify partner-specific classification.

2. ForexCarry/research.ipynb — QC Cloud org label (informational)
ESGF_School org changed to Partner org in print statements. The actual QC Cloud project ID (28657908) is preserved so there's no traceability issue — but be aware the QC Cloud organization still exists under its original name externally. This is a display string only, so no functional impact.

3. .gitignore additions (positive)
New NuGet build artifact rules for partner-course-quant-trading/lean-workspace/ (obj/ and bin/) are a good addition — the Phase 2 directory rename (#1638) created these build artifacts that weren't previously gitignored.

4. Triage decisions (confirmed)
9 historical files and 10 metadata/base64 files correctly preserved per the documented triage. No blind replace on QC Cloud project IDs or forensic data.

Verdict: LGTM for merge. The comment mismatch in the test file is the only actionable item, and it's cosmetic.

Copy link
Copy Markdown
Collaborator

@clusterManager-Myia clusterManager-Myia left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[NanoClaw] review — COMMENT

Phase 4 of ESGF branding removal. 34 files, all consistent find-replace: ESGF→partner-course in paths, ESGF_School→Partner in display text, ESGF-prefixed class names→Partner-prefixed.

Verified:

  • .gitignore: path rename + added NuGet build artifact ignores (obj/bin) — useful addition beyond the rename
  • catalog-drift.yml: EXCLUDE_PED updated correctly
  • audit_projects.py + test: validation pattern updated to match new naming
  • All notebook changes are markdown-only (titles, comments, instructions) — no cell output or code logic touched
  • Template path references (ESGF-2026/templates/ → partner-course-quant-trading/templates/) consistent across all QC-Py notebooks
  • STABLE_SNAPSHOT.md and teaching-context.md updated in sync

No security issues. No concerns. Clean bulk rename.

— NanoClaw (myia-ai-01)

Copy link
Copy Markdown
Collaborator

@clusterManager-Myia clusterManager-Myia left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[NanoClaw]

LGTM -- clean Phase 4 rename, 34 files, all pure text/branding changes with no logic mutations. A few observations:

No blockers found.

Minor notes:

  1. catalog-drift.yml (line 39): EXCLUDE_PED set uses partner-course which matches the dir partner-course-quant-trading/ via substring (any(exc in rel for exc in EXCLUDE_PED)). Correct, but fragile if a future dir were named non-partner-course. Not an issue today.

  2. audit_projects.py (line 131): The pattern check changed from "ESGF-" in name to "partner-" in name. This is correct for current naming, but note that "partner-" is a substring match -- it will match any project starting with partner- including future ones that are not validation-related. The existing "Validation" in name guard mitigates this. Fine as-is.

  3. TurnOfMonth/research.ipynb (line 365): "ESGF-2026 et n'a pas ete" was replaced with "partner-course-quant-trading et n'a pas ete". This reads as a raw directory path dropped into French prose. Consider "le cours partenaire" or similar for readability. Low priority.

  4. Class name references in research notebooks: PartnerHARRVKelly, PartnerVolEnsembleConservative, and PartnerGARCHVolTarget are referenced as "calibration target" class names in the research markdown, but the actual main.py files define classes as HarrvKellyAlgorithm, VolEnsembleConservativeAlgorithm, GarchVolTargetAlgorithm (no prefix). This is a pre-existing inconsistency from earlier phases -- the class names in research notebooks never matched the actual QC class names. Not introduced by this PR, but worth noting for a future cleanup pass.

  5. .gitignore (lines 24-26): New obj/ and bin/ rules under partner-course-quant-trading/lean-workspace/ are preventative -- the lean-workspace/ dir does not exist yet on main. Correct defensive addition for NuGet build artifacts.

  6. Triage decisions (per PR body): Historical audits, catalog_enrichment.json, forensic_results.json, and papermill metadata correctly preserved. The 29 remaining "ESGF" hits in the search index are all in audit docs, base64-encoded cell outputs, or the QC Cloud org name -- all appropriate exclusions.

Security: No credentials, tokens, or secrets introduced or exposed.

Copy link
Copy Markdown
Owner Author

@jsboige jsboige left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[NanoClaw] — Review Summary

Summary

Phase 4 of #1629 ESGF genericization: mechanical find-and-replace across 34 files covering 9 domains (root config, docs, QC Python notebooks, QC project research, kit-transitoire, ML pipeline, scripts). 53 additions / 49 deletions — net neutral. All changes are pure ESGF -> Partner/partner-course renaming with no functional logic changes.

Findings

  • All 34 files verified: replacements are consistent and mechanical. No accidental content deletion detected.
  • QC-Py notebooks (15 files): identical pattern (ESGF-2026/templates/ -> partner-course-quant-trading/templates/) applied uniformly.
  • Kit-transitoire (3 files): ESGF Kit -> Partner Course Kit — consistent.
  • QC project research notebooks (7 files): title prefixes (ESGF-HAR-RV-Kelly -> Partner-HAR-RV-Kelly, etc.) and calibration targets (ESGFHARRVKelly -> PartnerHARRVKelly, etc.) updated. Consistent with Phase 3a class renames from #1640.
  • STABLE_SNAPSHOT.md: 7 path references updated correctly.
  • audit_projects.py: "ESGF-" in name -> "partner-" in name and "ESGF-Framework" -> "Partner-Framework". Test updated to match. Consistent with Phase 2 directory renames.
  • .gitignore: added NuGet obj//bin/ ignore rules for partner-course-quant-trading/lean-workspace/ alongside the workspace rename. Reasonable addition.
  • docs/teaching-context.md: removed (ESGF) parenthetical from Partner row — now just "Partner". Clean.
  • No leftover ESGF references found in the diff — all instances in touched files were properly replaced.
  • No broken references introduced — all path renames match the directory structure from Phase 2 (#1638).

Security

Scan for HF_TOKEN|API_KEY|BEARER|PASSWORD|SECRET|TOKEN — only match is an existing .gitignore comment ("Generated secrets — never commit raw tokens"). No credentials or tokens exposed.


Reviewed by NanoClaw (ClusterManager) — 2026-05-28T14:30Z

Copy link
Copy Markdown
Owner Author

@jsboige jsboige left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[NanoClaw] review of #1654

Phase 4 of the #1629 ESGF genericization. 34 files touched, all text-level branding substitutions. I verified every file in the diff.

File count: 34 files -- matches the PR claim and metadata (53 additions, 49 deletions). Confirmed via --paginate (first page returns 30, full set is 34).

Completeness of ESGF removal:

  • Zero residual ESGF in any added line (verified via grep '^+' | grep -i ESGF).
  • All removals are clean 1:1 or multi-line replacements of ESGF branding with generic partner-course equivalents.
  • 15 QC Python notebooks: identical template path replacement (ESGF-2026/templates/ -> partner-course-quant-trading/templates/). Consistent.
  • 3 kit-transitoire notebooks: ESGF Kit -> Partner Course Kit. Consistent.
  • 7 research notebooks: class name renames (ESGFHARRVKelly -> PartnerHARRVKelly, etc.), ESGF_School org -> Partner org. Consistent.
  • Root docs (README.md, STABLE_SNAPSHOT.md, MyIA.AI.Notebooks/README.md): all path references updated. STABLE_SNAPSHOT.md had 7 replacements, all correct.
  • teaching-context.md: Partner (ESGF) -> Partner (removed parenthetical). Clean.
  • Scripts: audit_projects.py updated pattern matching (ESGF- -> partner-, ESGF-Framework -> Partner-Framework). Test updated to match. Consistent.
  • .gitignore: path rename + bonus NuGet obj/bin exclusion rule added. Fine.
  • catalog-drift.yml: EXCLUDE_PED set updated. Fine.

Grammar / style note (minor):
Line in Vol-Ensemble-Conservative/research.ipynb:

-    "C'est la plus conservatrice des 3 strategies ESGF.\n",
+    "C'est la plus conservatrice des 3 strategies partner.\n",

This reads awkwardly in French -- "strategies partner" is not a natural collocation. "strategies du cours partenaire" or "strategies partenaire" would be more idiomatic. Not a blocker, but worth fixing for consistency with the rest of the genericization which uses "partenaire" and "partner course" properly elsewhere.

Security: No credential patterns (HF_TOKEN, API_KEY, BEARER, PASSWORD, SECRET, TOKEN) in added lines.

No accidental content deletion: All changes are strictly branding substitutions. No code logic, pedagogical content, or data was removed or altered beyond the ESGF -> partner rename.

Verdict: Clean, mechanical, complete. The one grammar nit in Vol-Ensemble-Conservative is the only non-mechanical finding. LGTM with that optional fix.

Copy link
Copy Markdown
Collaborator

@clusterManager-Myia clusterManager-Myia left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[NanoClaw] Phase 4 ESGF genericization review

Clean mechanical find-and-replace across 34 files. All ESGF references in removed lines correctly replaced with partner/Partner equivalents. No residual ESGF in new code.

Verified:

  • All 38 ESGF hits in diff are removal lines only (prefix -)
  • QC Cloud project IDs preserved (immutable)
  • .gitignore additions (obj/bin NuGet artifacts) are sensible
  • catalog-drift.yml EXCLUDE_PED updated to match new directory name
  • Kit-transitoire titles updated consistently
  • Security scan: no credentials, tokens, or secrets exposed

Minor nits (non-blocking):

  • TrendStocksLite notebook: Module M2 ESGFModule M2 (cours partenaire) — extra parens make it read oddly
  • Notebook prose references PartnerHARRVKelly, PartnerGARCHVolTarget, PartnerVolEnsembleConservative as "Calibration cible dans main.py" but the actual class names in main.py are HarrvKellyAlgorithm, GarchVolTargetAlgorithm, VolEnsembleConservativeAlgorithm — these labels refer to QC Cloud project names, not Python classes, but the wording could confuse a student looking for the class definition

Overall: LGTM. Consistent with Phases 1-3.

@jsboige jsboige merged commit b22c89b into main May 28, 2026
7 of 8 checks passed
@jsboige jsboige deleted the feature/genericize-esgf-1629-p4 branch May 29, 2026 23:06
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants