Skip to content

Chore/training infrastructure cleanups - #334

Open
hyperpolymath wants to merge 8 commits into
mainfrom
chore/training-infrastructure-cleanups
Open

Chore/training infrastructure cleanups#334
hyperpolymath wants to merge 8 commits into
mainfrom
chore/training-infrastructure-cleanups

Conversation

@hyperpolymath

@hyperpolymath hyperpolymath commented Jul 29, 2026

Copy link
Copy Markdown
Owner

Summary

Closes #

Type of change

  • 🐛 Bug fix (non-breaking change that fixes an issue)
  • ✨ New feature (non-breaking change that adds functionality)
  • 💥 Breaking change (would change existing behaviour)
  • 🕳️ Soundness fix (fixes a checker/proof false-negative)
  • 📖 Documentation
  • 🧹 Refactor / tech debt (behaviour-preserving)
  • ⚡ Performance
  • 🔧 Build / CI / tooling

How has this been verified?

Checklist

  • My commits are signed (git commit -S).
  • I ran the project's own checks/tests locally and they pass.
  • New files carry the correct SPDX-License-Identifier (code/config MPL-2.0,
    prose CC-BY-SA-4.0); I did not relicense existing files.
  • Docs are updated, and no public claim now overstates what the code does.
  • I have not introduced a soundness hole (or I have flagged where I might have).

Notes for reviewers


Summary by Gitar

  • Contractiles & Infrastructure:
    • Reconciled contractiles to standards canonical layout and completed all six tridents (must, trust, adjust, dust, bust, intend) with coherence manifests
    • Added required governance documentation (GOVERNANCE.adoc)
  • CI/CD & Security:
    • Adopted standard reusable workflows for Scorecard, Hypatia, and Governance
    • Completed migration from Gitleaks to TruffleHog secret scanning across CI and local tasks
  • Training & Logging:
    • Added EchidnaML CUDA logging fix and per-stage run documentation

This will update automatically on new commits.

hyperpolymath and others added 8 commits June 4, 2026 10:35
EchidnaML.jl: CUDA.version() was removed in CUDA.jl 5.x; replace
with runtime_version() / driver_version() wrapped in try/catch so a
logging-only probe failure can't kill the init path. Surfaced during
first owner-authorised GNN training run as a MethodError log noise.

docs/training-runs/2026-06-02.md: per-stage run-log scaffold for the
2026-06-02 GNN training run (reactive doc — placeholders for stages
3/4/5 to be filled in as they complete; stage 0/1/2 outcomes already
captured).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
…tructure-cleanups

# Conflicts:
#	docs/training-runs/2026-06-02.md
…complete must/trust/dust/intend tridents

Discard the rsr-template flat residue that had been staged on this branch
(the Mustfile still read "contract for rsr-template-repo") and restore the
canonical per-verb subdir layout defined by
standards/contractiles/CANONICAL-TEMPLATES.adoc.

Complete the four missing tridents with bespoke runner/.k9/manifest
companions, mirroring the existing adjust/bust pattern and matching each
verb's INDEX.a2ml entry:

- must:   Hunt-read-only, blocking (exit-nonzero); LICENSE/README/banned-path
          invariants; subtle invariant-erosion focus
- trust:  Hunt, blocking; T### namespace, dispatcher-trust boundary,
          threat-model foregrounding
- dust:   Yard, advisory; D### broom-and-pan recovery, --apply + per-item
          approval, audit-trail preservation
- intend: Hunt, non-gating; dual [[intents]]/[[wishes]] schema (absorbed lust)

Add a bespoke contractiles/README.adoc (MPL-2.0, matching the sibling files
in the directory) and refresh the now-stale INDEX.a2ml note.

All six runner .ncl files nickel typecheck clean; the four Xfile declarations
are byte-identical to HEAD. The shared ../k9/ Hunt base import remains a known
estate-wide gap (tracked by the respec programme), not patched per-repo here.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…rnance-docs check)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Finish the half-applied gitleaks -> TruffleHog swap and repair the botched
parts of the 2026-06-11 sweep:

- .pre-commit-config.yaml: remove the orphaned/broken gitleaks block
  (dangling rev:/hooks: after the repo/id lines were stripped). Secret
  scanning is enforced CI-side via TruffleHog.
- echidna-playground/.github/workflows/security-checks.yml: replace the
  broken gitleaks step (name + env, no uses:) with a SHA-pinned TruffleHog
  step (@8a8ef85 # v3); drop the redundant unpinned trufflehog@main job.
- echidna-playground/.github/workflows/secret-scanner.yml: gitleaks job
  removed; SHA-pinned TruffleHog retained.
- .gitlab-ci.yml: TruffleHog job in the existing `security` stage
  (image :latest, matching the estate's existing references).
- Justfile: local `secret-scan-trufflehog` convenience recipe.

The redundant unpinned inline trufflehog@main that the sweep added to the
main secret-scanner.yml was dropped — that workflow already runs TruffleHog
via the standards secret-scanner-reusable.yml.

NOTE: the shared standards/secret-scanner-reusable.yml still bundles
gitleaks; removing it there (estate-wide, separate repo) is the remaining
step for the reusable path to be fully gitleaks-free.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@hyperpolymath
hyperpolymath enabled auto-merge July 29, 2026 21:59
Comment thread .github/workflows/scorecard.yml
Comment thread .github/workflows/hypatia-scan.yml
Comment thread .gitlab-ci.yml
@gitar-bot

gitar-bot Bot commented Jul 29, 2026

Copy link
Copy Markdown

Note

Automatic reviews are paused because your trial's included automatic processing has been used for this period. Upgrade now, or comment "Gitar review" to run a review anytime.
Learn more

Code Review ✅ Approved 3 resolved / 3 findings

Adopts standard reusable workflows and migrates CI security tooling while adding governance documentation and training fixes, but requires fixing permission grants in the Scorecard and Hypatia callers and addressing shallow-clone history limits in TruffleHog.

✅ 3 resolved
Bug: Scorecard reusable caller no longer grants upload permissions

📄 .github/workflows/scorecard.yml:11-16
The rewritten scorecard.yml only sets permissions: contents: read at the top level and dropped the previous job-level security-events: write + id-token: write grants (and secrets: inherit). For reusable workflows the caller's token permissions are the ceiling — a called workflow can only downgrade, never elevate them. OSSF Scorecard needs security-events: write to upload the SARIF to code scanning and id-token: write to publish results, so the analysis will likely fail to upload/publish. Restore the needed grants on the calling job (and re-add secrets: inherit if the reusable requires a token).

Bug: Hypatia scan downgrades security-events to read, blocking SARIF upload

📄 .github/workflows/hypatia-scan.yml:13-18
hypatia-scan.yml now grants only security-events: read (previously write) and dropped pull-requests: write and secrets: inherit. Because a called reusable workflow's token is capped by the caller, the Hypatia scan will be unable to upload SARIF/code-scanning results or post PR annotations if the reusable performs those steps. If the reusable uploads scan results, restore security-events: write (and pull-requests: write / secrets: inherit as required).

Bug: GitLab TruffleHog scan misses history under default shallow clone

📄 .gitlab-ci.yml:306-310
The new trufflehog GitLab job runs trufflehog git file://. but GitLab CI performs a shallow clone by default (GIT_DEPTH ~20), so only recent commits are scanned and secrets introduced in older history are missed. The GitHub equivalent deliberately sets fetch-depth: 0. Set GIT_DEPTH: 0 for this job (or a variable) to scan full history and match the intended coverage.

Options

Display: compact → Showing less information.

Comment with these commands to change the behavior for this request:

Compact
gitar display:verbose         

Was this helpful? React with 👍 / 👎 | Gitar

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.

1 participant