Skip to content

Clarify fine-tuning job results and monitoring help - #419

Draft
saioai wants to merge 9 commits into
mainfrom
codex/plan-exp-f12-fine-tuning
Draft

saioai wants to merge 9 commits into
mainfrom
codex/plan-exp-f12-fine-tuning

Conversation

@saioai

@saioai saioai commented Oct 10, 2026 •

Copy link
Copy Markdown
Contributor

Empty fine-tuning job lists currently say No results. This change explains the returned jobs without guessing training eligibility.
Help also makes existing monitoring and checkpoint-access commands easier to use.

What changes

  • Successful empty jobs lists say No fine-tuning jobs returned. and Training eligibility was not checked.
  • Access failures, pagination failures, and cancellation remain errors. Zero-item limits suppress the empty-result message.
  • Fine-tuning help explains events, job status, pause/resume, restricted training access, and checkpoint sharing.
  • The guide covers existing API commands, dashboard gaps, and the official availability timeline.
  • Request tests cover training methods, graders, checkpoint sharing, and job-level Weights & Biases integration.

Commands

No new commands or flags. Existing grouped and colon routes remain available.

openai fine-tuning jobs list                                      # readable jobs or a clear empty result
openai fine-tuning jobs list --format json                         # one array of full records
openai fine-tuning jobs list --format jsonl                        # one full record per line
openai fine-tuning jobs retrieve --fine-tuning-job-id ftjob_example # inspect status and errors
openai fine-tuning jobs list-events --fine-tuning-job-id ftjob_example
openai fine-tuning checkpoints permissions --help                  # admin-key sharing guidance

Replace ftjob_example with a returned job ID. Events do not follow future updates.
Automatic readable output uses the new empty message in pipes too.
Explicit JSON retains main's finite-array behavior, including [] for an empty list.
Extraction, raw output, request headers, credentials, and project context retain their existing behavior.

Code

pkg/custom/fine_tuning_monitoring.go owns fine-tuning prose and help.
Assembly passes its empty-list message through internal/output.ReadableOptions.
The shared renderer retains terminal escaping, cancellation, and output-error handling.
Adjacent tests cover custom messages, default messages, nonempty results, upstream failures, cancellation, and failed writes.
Public-entrypoint tests verify the documented request paths and accepted input modes with fake credentials.
This change adds no package or dependency. Generated command sources remain untouched relative to the pinned base.
The demo reuses the shared recording lifecycle.

Tested

Candidate: b15307f7497603b95dd5b56fc2434c92cf926fc3, including base 52f0ad031c79d287a1e896fb27f84b6a61da7ceb.
Local checks used macOS arm64, Go 1.26.9, and synthetic localhost fixtures.

  • Thirty focused test roots passed. Race checks covered ten shared-output roots and two fine-tuning roots. No selected test skipped.
  • Module integrity, both builds, formatting, and whitespace checks passed.
  • All 184 compiled checks passed, including 132 copied Bash/zsh help examples and 39 output-mode cases.
  • Native help covered nested and colon routes, PATH lookup, paths with spaces, and conflicting PATH entries.
  • Bash and zsh scripts/run examples passed.
  • Real EBADF, SIGINT, partial results, late API failures, and closed-pipe failures preserved their contracts.
  • Affected-package go vet exited 1 on both snapshots. Its 18 diagnostics matched byte-for-byte across seven unchanged files.
  • Independent adversarial review found no production regression.

CodeQL source preparation failed before analysis because event/base identities differed.
Other hosted CI and trusted budget results appear in the PR checks.
Local checks apply to the pinned candidate and base above.
Local fixtures cannot establish live training eligibility or service acceptance.
Checkpoint export still needs a supported public contract and an agreed customer requirement.
Native graphical-terminal appearance and other platform combinations remain unverified.

Demo

Retained macOS Bash terminal replays use identical synthetic empty and HTTP 403 responses.
The original recordings passed visual review in dark80, light80, and colorless40 profiles.
Their baseline is 5739ce0f; their runtime is aa60aa9.
Dark80 uses recording source 574d4c9. Light80 and colorless40 use recording source df320435.
These historical captures predate this candidate. The integration preserves the demonstrated empty-result text.
The captures establish terminal-replay appearance only. Native graphical-terminal appearance and live API acceptance remain unverified.

Fine-tuning monitoring comparison

Before:

Before: generic empty jobs result

After:

After: empty jobs and eligibility distinction

Recording recipe

@github-actions

github-actions Bot commented Oct 10, 2026 •

Copy link
Copy Markdown

Castiron custom code

Evaluated main: e963b2f5b9d493313061e09273c6ab62ece426cd.

Trusted main policy: e963b2f5b9d493313061e09273c6ab62ece426cd.

✅ No new custom-code files detected.

0 mixed files remain; 0 existing customizations changed.

Compared 52f0ad031c79 → b15307f74976. Generated baselines verified.

A changed generated baseline means this report cannot reliably identify which handwritten lines changed.

Inspect the custom-code diff

Download the exact patch produced by this run (requires repository access):

gh run download 39305138422 --repo openai/openai-cli \
  --name castiron-custom-code-39305138422-1 --dir /tmp/castiron-custom-code-39305138422-1
git apply --stat /tmp/castiron-custom-code-39305138422-1/custom-code.patch
cat /tmp/castiron-custom-code-39305138422-1/custom-code.patch

Or reproduce it from an SDK checkout containing the vendored reporter:

git fetch --no-tags origin e963b2f5b9d493313061e09273c6ab62ece426cd b15307f7497603b95dd5b56fc2434c92cf926fc3
python3 scripts/castiron/custom_code_report.py report \
  --base e963b2f5b9d493313061e09273c6ab62ece426cd \
  --head b15307f7497603b95dd5b56fc2434c92cf926fc3 --fetch --require-head-hash --public \
  --out /tmp/castiron-custom-code-b15307f74976
cat /tmp/castiron-custom-code-b15307f74976/custom-code.patch

This is the current full custom patch for mixed files, not an attribution of only the handwritten lines changed by this PR.

Full report and patch

This branch has not been deployed

No deployments
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