Skip to content

gfx/plate-sprint: OUTDOOR-LORA trained + smoke tested (#1481) — camp borderline, forest_road regresses#1498

Open
100yenadmin wants to merge 3 commits into
mainfrom
gfx/outdoor-lora-manifest
Open

gfx/plate-sprint: OUTDOOR-LORA trained + smoke tested (#1481) — camp borderline, forest_road regresses#1498
100yenadmin wants to merge 3 commits into
mainfrom
gfx/outdoor-lora-manifest

Conversation

@100yenadmin

Copy link
Copy Markdown
Member

Summary

  • Curates an 18-image exterior-heavy training set for a new flux.1-lora (model_RsWEcQL2NWXwoyEodWVE2vWG, "WorldOS Painterly Exterior (FLUX)") meant to break the outdoor plate class's 6.0 quality cap — ARM C's interior-heavy LoRA (model_G379oza2qhm6MkqDrtTvvmmw, issue Registration-preserving layered plates: firelit warmth AND ~1.0 greybox registration (the relight blocker) #1481) regresses outdoor generation (PR Plate sprint: CB-FOREST evidence — ARM C LoRA does NOT lift the outdoor 6.0 cap #1495).
  • Set composition: 5 exteriors reused directly from worldos-poe2-clean-env-v4's curated set (no re-upload) + 12 new exteriors pulled from that same corpus's uncurated candidates (~/worldos-session-notes/poe2-refs-clean/manifest.json, which is 43/48 interior-biased in its own SELECTED.txt) + 1 adopted WorldOS outdoor plate (camp_clearing_night_v2, already precedented as an ARM C training image). Per-image source URL + license class recorded in training_manifest.md for repeatability.
  • Categories covered: forest (2), camp (2), town street/bridge (4), coast (1), ruins-outdoor (3), fortress-ext (2 bonus), temple-ext (1 bonus), wetland/battlefield-adjacent (2). No clean char-free battlefield-specific frame existed in the source corpus (the one candidate, refc_015.jpg, has small NPCs visible — excluded for the char-free bar; documented in the manifest).

Blocked — training not started

  • Dry-run cost estimate for the 18-image flux.1-lora config: 1080 CU (~$20.7 est.) — under the lane's $25 cap.
  • train(action=start) returned HTTP 429 PlanLimitReachedError: actionName: "train-model", actionLimit: 10000, actionValue: 9754, limitScope: "team" — the Scenario team plan's train-model CU allowance is 97.5% consumed (246 CU headroom vs. 1080 CU needed). This is a hard account quota, not a dollar-cost gate, and isn't resolvable by trimming the dataset further (already at the mandate's 18-image floor).
  • The model is created with all 18 training images attached and ready. Resume path documented in model_state.json — once CU headroom exists, call train(action=start, model_id='model_RsWEcQL2NWXwoyEodWVE2vWG').

Needs the owner to either purchase additional Scenario CU / raise the team's train-model limit, or confirm this is a recurring-period quota that will reset, before this lane can proceed to train → smoke-test (mandate steps 2-4).

Test plan

  • Dry-run cost estimate obtained and confirmed under the $25 cap
  • Training images attached (18/18) to model_RsWEcQL2NWXwoyEodWVE2vWG
  • Training run (blocked — see above)
  • Smoke test (forest_road + camp anchors, Gemini re-registration, 5-scorer panel) — blocked on training

@coderabbitai

coderabbitai Bot commented Jul 10, 2026

Copy link
Copy Markdown

Review Change Stack

📝 Walkthrough

Walkthrough

The PR adds training provenance, repaint metadata, panel mappings, scorer verdicts, a consolidated smoke-test report, and two score-ledger entries for the OUTDOOR-LORA evaluation.

Changes

Outdoor LoRA evidence

Layer / File(s) Summary
Training dataset and run record
qa/evidence/plate-sprint/outdoor-lora/training_manifest.md, qa/evidence/plate-sprint/outdoor-lora/model_state.json
Documents the curated 18-image exterior-focused dataset, exclusions, quality checks, rebalance, training configuration, quota handling, and recorded model-run state.
Per-room repaint and panel evaluation
qa/evidence/plate-sprint/outdoor-lora/camp/*, qa/evidence/plate-sprint/outdoor-lora/forest_road/*
Records repaint prompts, image-role mappings, scorer medians, control validity notes, candidate defects, advisory metrics, and room-level verdicts for camp and forest road.
Consolidated smoke-test reporting
qa/evidence/plate-sprint/outdoor-lora/SMOKE-TEST-VERDICT.md, qa/scores_ledger.md
Summarizes the methodology and room results, records the geometry-bias hypothesis and readiness assessment, and adds the two smoke-test outcomes to the score ledger.

Estimated code review effort: 2 (Simple) | ~15 minutes

Confidence: 99%

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Description check ⚠️ Warning Only Summary and Test plan are present; most required template sections are missing. Confidence 98%. Add the missing template sections: Linked Issue, Tracker/Milestone, CLA/licensing, Review Thread State, Validation, Release notes, Safety/Rollback, Evidence, and Next Agent notes.
✅ Passed checks (4 passed)
Check name Status Explanation
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Title check ✅ Passed Title matches the main change: OUTDOOR-LORA training plus smoke-test outcomes for camp and forest_road. Confidence 93%.
✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch gfx/outdoor-lora-manifest

Comment @coderabbitai help to get the list of available commands.

@evaos-code-review-bot

evaos-code-review-bot Bot commented Jul 10, 2026

Copy link
Copy Markdown

evaOS review status: completed

PR: #1498 - gfx/plate-sprint: OUTDOOR-LORA training manifest (#1481) — BLOCKED on Scenario quota
Head: c920315b3986478b889b23154c84b86eca863290
Updated: 2026-07-10T09:59:42.477Z

evaOS review completed for this PR head.

Automation note: agents should wait for this comment to reach completed, stale_head, closed_or_merged_before_review, skipped, or failed before treating evaOS review as settled for this head. provider_deferred means evaOS still intends to retry.

PR URL: #1498

Review URL: #1498 (review)

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: c920315b39

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment on lines +69 to +70
`worldos-poe2-clean-env-v4`. This manifest documents source URL + license
class per image (the owner's stated repeatability condition) but does not

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Add the missing per-image source URLs

For anyone resuming or auditing this lane outside the original machine, the in-repo manifest does not satisfy the stated repeatability condition: the table rows list only host/filename labels for the Fandom/RPGFan assets, while the backing corpus is an owner-local path, so future trainers cannot refetch or verify the exact pages/license provenance before spending Scenario CU. Please include the actual per-image source URLs here rather than relying on the local corpus.

Useful? React with 👍 / 👎.

@evaos-code-review-bot evaos-code-review-bot Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Walkthrough

PR: #1498 - gfx/plate-sprint: OUTDOOR-LORA training manifest (#1481) — BLOCKED on Scenario quota
Head: c920315b3986478b889b23154c84b86eca863290 into main. Review event: COMMENT.
Provider: GLM/Z.ai through ZCode (zcode-glm, zcode, model GLM-5.2).

Estimated review effort: 1/5 (~14 min)

Changed Files

File Status Churn Purpose Risk
qa/evidence/plate-sprint/outdoor-lora/model_state.json added +46/-0 Changed file Low
qa/evidence/plate-sprint/outdoor-lora/training_manifest.md added +104/-0 Documentation Moderate: validated P3 finding

Review Signal

Validated inline findings: 1 (P0: 0, P1: 0, P2: 0, P3: 1).
Dropped findings before posting: 0. High-severity findings: 0.

Risk Taxonomy

  • Auth: 1

Validation and Proof

1 required validation/proof recommendation(s) selected from changed files.

  • required: Unity editor or Play Mode smoke - WorldOS repo profile implies Unity runtime risk. Proof: Unity editor smoke; Play Mode log; scene/prefab screenshot or recording.
    Proof status: missing - 1 required validation/proof recommendation(s) missing from PR metadata.
    Profile validation hints: Prefer correctness, persistence, CI, release, and regression findings over style-only feedback.
    Profile proof expectations: Look for Unity editor, play-mode, fixture, or focused smoke evidence when runtime behavior changes.

Related Context

Related issues/PRs: #1481, #1495.
Suggested labels: docs.
Suggested reviewers: none from current metadata.

Review Settings Preview

  • Profile: assertive
  • Enabled sections: Review summary (inline_review); Walkthrough (inline_review); Changed-files table (walkthrough); Effort estimate (walkthrough); Related issues/PRs (walkthrough); Suggested labels (suggestion_only); Review status comment (sticky_status)
  • Path instructions: Assets/** - Prioritize scene, prefab, save-state, asset-reference, and gameplay regressions.
  • Path instructions: ProjectSettings/** - Treat build, platform, input, graphics, and release behavior changes as high risk.
  • Label suggestions: unity, gameplay, regression-hardening
  • Reviewer suggestions: none
  • Suggestion behavior: suggestions only; labels and reviewers are not auto-applied.
  • Roadmap-only settings: auto-apply labels; auto-request reviewers; required status checks

Pre-merge checklist

  • Inline comments target current RIGHT-side diff lines.
  • No secret-like content survived into posted inline comments.
  • REQUEST_CHANGES is only used when eligible P0/P1 findings survive validation.
  • Required behavior proof is present or not applicable.
  • Labels and reviewers are suggestions only; the bot did not auto-apply them.

| 7 | ext_007_jungle_courtyard_shrine.jpg | RPGFan, `...Screenshot-066.jpg` (`refc_003.jpg`) | exterior (ruins-outdoor analog) | RPGFan press screenshot | `asset_hWtoxJFBN1i6UeJfe3CR7Gz8` |
| 8 | ext_008_twinelms_hearthsong_village.jpg | Fandom wiki, `Twin-elms-hearthsong.jpg` (`refc_004.webp`) | exterior (town street) | Fandom wiki, PoE1 | `asset_nYiu6Gu6GXWdRKSh9TKfMhYs` |
| 9 | ext_009_ondras_gift_coast.jpg | Fandom wiki, `Ar_0103_def_bay_ondras_gift.jpg` (`refc_006.webp`) | settlement, exterior (coast) | Fandom wiki, PoE1 | `asset_ofmGDEpi6ur85RnTBgA6LAzJ` |
| 10 | ext_010_night_camp.jpg | RPGFan, `Pillars-of-Eternity-Screenshot-001.jpg` (`refc_007.jpg`) | exterior (camp) | RPGFan press screenshot — **URL re-derived from gallery index position, not independently re-verified this session** (flagged in source `manifest.json`) | `asset_v7ADRUjCQACLPJdXh9nbsBKR` |

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P3: Item #10 source URL not independently re-verified this session

ext_010_night_camp.jpg is documented with the caveat 'URL re-derived from gallery index position, not independently re-verified this session (flagged in source manifest.json)'. The author already self-discloses this, which is good practice. To fully meet the owner's stated per-image repeatability condition, the exact source URL for this one frame should be independently re-verified (and the manifest updated, or the image replaced) before this set is relied on for training. This is a provenance-traceability gap, not a correctness/release defect — every other item lists a concrete source file.

Category: Auth

Why this matters: The repo's operating stance treats manifest repeatability (source URL + license class per image) as the owner's stated condition for reusing the v4 reference corpus. One frame with an un-verified URL weakens that audit trail, even though training is currently quota-blocked.

@evaos-code-review-bot

evaos-code-review-bot Bot commented Jul 10, 2026

Copy link
Copy Markdown

evaOS review status: completed

PR: #1498 - gfx/plate-sprint: OUTDOOR-LORA training manifest (#1481) — BLOCKED on Scenario quota
Head: ad91f82ba38bc69ebad21e180fe7fa3f9ee24235
Updated: 2026-07-10T10:41:16.137Z

evaOS review completed for this PR head.

Automation note: agents should wait for this comment to reach completed, stale_head, closed_or_merged_before_review, skipped, or failed before treating evaOS review as settled for this head. provider_deferred means evaOS still intends to retry.

PR URL: #1498

Review URL: #1498 (review)

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: ad91f82ba3

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

outdoor `forest_road` plate class to the 6.0 quality cap (PR #1495,
`qa/evidence/plate-sprint/cb-forest/`).

18 images, all char-free (no human/creature figures), all real painterly

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Attach reviewer-visible pixels for this visual lane

The repo’s docs/OPERATIONS.md evidence rule for visual work requires visible still-frame evidence, but this manifest asserts the finalized 18-image set is char-free and quality-checked while the commit only adds MD/JSON and no reviewer-visible contact sheet or sample frames under qa/evidence/plate-sprint/outdoor-lora. That leaves the actual training pixels unauditable before the Scenario model is used, so please add the allowed still-frame/contact-sheet evidence or point this manifest at the attached PR/issue evidence for the finalized set.

Useful? React with 👍 / 👎.


1. **Char-free re-check (zoom, not thumbnail):** all 18 confirmed free of
living human/creature figures.
- `ext_005` (then "gilded_vale_wilderness", now the mountain swap target)

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Correct the image ID in the char-free audit trail

This audit note maps the ambiguous-figure zoom check to ext_005, but the manifest’s final set defines ext_005 as western_exterior_mountain and gilded_vale_wilderness as ext_011. For anyone validating the expensive training set, it is now unclear which final asset was crop-zoomed and which image’s char-free proof is missing, so the ID/name should be corrected to match the final 18-image table.

Useful? React with 👍 / 👎.

Comment on lines +113 to +115
- `ext_015` (madhmr_bridge) has 2-3 small reddish shapes in the grass —
confirmed wildlife (resting deer/animal), not humanoid figures. Common
PoE scene-dressing convention, not disqualifying.

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Remove wildlife from the char-free set

The set’s stated bar is “no human/creature figures,” and another candidate was excluded for visible NPCs, but this keeps ext_015 after confirming it contains resting wildlife. If this LoRA is meant to be a strictly character-free exterior model, leaving living animal figures in the finalized 18-image training set undermines that filter and can leak creature scene-dressing into later smoke tests; either remove this frame or explicitly relax and document the bar before training/evaluating against it.

Useful? React with 👍 / 👎.

@evaos-code-review-bot evaos-code-review-bot Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Walkthrough

PR: #1498 - gfx/plate-sprint: OUTDOOR-LORA training manifest (#1481) — BLOCKED on Scenario quota
Head: ad91f82ba38bc69ebad21e180fe7fa3f9ee24235 into main. Review event: COMMENT.
Provider: GLM/Z.ai through ZCode (zcode-glm, zcode, model GLM-5.2).

Estimated review effort: 1/5 (~14 min)

Changed Files

File Status Churn Purpose Risk
qa/evidence/plate-sprint/outdoor-lora/model_state.json added +67/-0 Changed file Moderate: validated P3 finding
qa/evidence/plate-sprint/outdoor-lora/training_manifest.md added +174/-0 Documentation Low

Review Signal

Validated inline findings: 1 (P0: 0, P1: 0, P2: 0, P3: 1).
Dropped findings before posting: 0. High-severity findings: 0.

Risk Taxonomy

  • Release regression: 1

Validation and Proof

1 required validation/proof recommendation(s) selected from changed files.

  • required: Unity editor or Play Mode smoke - WorldOS repo profile implies Unity runtime risk. Proof: Unity editor smoke; Play Mode log; scene/prefab screenshot or recording.
    Proof status: missing - 1 required validation/proof recommendation(s) missing from PR metadata.
    Profile validation hints: Prefer correctness, persistence, CI, release, and regression findings over style-only feedback.
    Profile proof expectations: Look for Unity editor, play-mode, fixture, or focused smoke evidence when runtime behavior changes.

Related Context

Related issues/PRs: #1481, #1495.
Suggested labels: docs.
Suggested reviewers: none from current metadata.

Review Settings Preview

  • Profile: assertive
  • Enabled sections: Review summary (inline_review); Walkthrough (inline_review); Changed-files table (walkthrough); Effort estimate (walkthrough); Related issues/PRs (walkthrough); Suggested labels (suggestion_only); Review status comment (sticky_status)
  • Path instructions: Assets/** - Prioritize scene, prefab, save-state, asset-reference, and gameplay regressions.
  • Path instructions: ProjectSettings/** - Treat build, platform, input, graphics, and release behavior changes as high risk.
  • Label suggestions: unity, gameplay, regression-hardening
  • Reviewer suggestions: none
  • Suggestion behavior: suggestions only; labels and reviewers are not auto-applied.
  • Roadmap-only settings: auto-apply labels; auto-request reviewers; required status checks

Pre-merge checklist

  • Inline comments target current RIGHT-side diff lines.
  • No secret-like content survived into posted inline comments.
  • REQUEST_CHANGES is only used when eligible P0/P1 findings survive validation.
  • Required behavior proof is present or not applicable.
  • Labels and reviewers are suggestions only; the bot did not auto-apply them.

"model_name": "WorldOS Painterly Exterior (FLUX)",
"model_type": "flux.1-lora",
"scenario_project_id": "proj_sd4w3ozsJaBHYnHS4mP1S2Pw",
"status": "training",

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P3: PR title says 'BLOCKED on quota' but evidence records training as started/running

The PR title states the training manifest is 'BLOCKED on Scenario quota,' yet the committed evidence contradicts that: model_state.json line 6 sets "status": "training", line 7 records a running job ("training_job_id": "job_U3HDsSj7T4aPETy7MRCuX6oK"), and the 'blocker_resolved' block (lines 18-26) plus the manifest's 'Cost + quota — RESOLVED, training started' section both state the quota was resolved (owner added 5,000 CU on 2026-07-10) and train(action=start) succeeded. Either the title is stale and should read 'training started' (matching the evidence), or the evidence is ahead of reality and the status field should be reverted to a blocked/quota state. Per the repo's proof-honesty discipline, the PR's described state and the committed evidence should agree before merge. Note also that status:"training" is a point-in-time snapshot (started 2026-07-10T10:21:49Z); if the job has since completed, a follow-up status update is expected per the recorded next_steps.

Category: Release regression

Why this matters: This lane feeds the RRI/plate-sprint evidence chain. A title that advertises 'BLOCKED' while the artifact proves 'started' makes the lane's state ambiguous to anyone triaging the tracker, and undermines the evidence-trail honesty the repo explicitly gates on (AGENTS.md: 'Release evidence requires ... non-partial status'; RRI proof expectations).

Eva added 3 commits July 10, 2026 20:18
…ng blocked on Scenario CU quota

Curates an 18-image exterior-heavy real-painterly training set for a new
flux.1-lora (model_RsWEcQL2NWXwoyEodWVE2vWG, "WorldOS Painterly Exterior")
meant to counter ARM C's interior-heavy regression on the outdoor 6.0 cap
(PR #1495). Sources: 5 reused exteriors from worldos-poe2-clean-env-v4's
curated set + 12 new exteriors pulled from that corpus's uncurated
candidates (manifest.json) + 1 adopted WorldOS plate (camp_clearing_night_v2).
Per-image source URL + license note recorded for repeatability.

Training NOT started: dry-run cost (1080 CU, ~$20.7, under the $25 lane cap)
succeeded, but train(action=start) hit a hard Scenario plan quota
(train-model CU 9754/10000 used, team-scoped) — needs owner to add CU or
confirm quota reset. Model is created with all 18 images attached and ready;
resume instructions in model_state.json.
Owner added 5,000 CU (unblocking the earlier 429 quota hit) and set a new
discipline: verify no redundant model exists, dry-run cost again, and do a
top-notch quality pass before spending. Model-inventory check (7 private
models, none an exterior FLUX LoRA) confirmed non-redundant.

Quality pass on the 18-image set (full-res zoom, not thumbnail):
- All 18 re-confirmed char-free; one ambiguous figure (gilded_vale) crop-
  zoomed and confirmed a statue on a pedestal, not living.
- Caught two auto-caption/actual-content mismatches (t_046, t_048 are
  grander architecture than their PoE-wiki filenames implied) and one
  caption misfire (bog auto-captioned as "war-torn...tanks" -- visually a
  legitimate marsh/ruins scene).
- Rebalanced: swapped OUT t_048 "ruins_firstfires" (actually a full
  cathedral plaza -- the single most architecture-dominant frame, and least
  representative of the forest_road/camp smoke-test target rooms) for
  refc_068 "western_exterior_mountain" (natural terrain, zero architecture,
  already uploaded, no extra cost). Same 18-image count, same 1080 CU.
- Dedupe check: no near-identical frames remain.

Post-swap dry-run reconfirmed 1080 CU (~$20.7, under the $25 cap).
train(action=start) succeeded: job_U3HDsSj7T4aPETy7MRCuX6oK.
…oad regresses (#1481)

Trained model_RsWEcQL2NWXwoyEodWVE2vWG (job_U3HDsSj7T4aPETy7MRCuX6oK, 1080 CU) after the
owner-directed quality pass, then ran the smoke plan on both target rooms: mint anchor
(model_bfl-flux-1-dev depth-CN + the new LoRA, schema-correct loras/lorasScale) -> Gemini
re-registration (structure-lock + dimetric-lock, referenceImages=anchor) -> overlay +
advisory edge-recall -> 5-scorer blind panel vs the 6.0 baseline.

Results: camp_clearing_night candidate median 6.5 vs incumbent 6.0 (+0.5, borderline —
right at the >6.5 line, one recurring firepit-ring artifact). forest_road candidate median
2.0 — a severe regression: all 5 blind scorers independently flagged broken/wireframe
architecture, the same invented-architecture failure mode ARM C produced on this room, just
worse. Root-cause hypothesis: forest_road's greybox represents its tree line as adjacent
rectangular box volumes, which the model reads as buildings regardless of training-data
domain — a geometry-shape bias, not purely a training-domain bias. Full verdicts, panel
scores, and cost actuals in qa/evidence/plate-sprint/outdoor-lora/SMOKE-TEST-VERDICT.md.

Two new scores_db rows (surface=visual): outdoor-lora-smoke-forest_road-2026-07-10,
outdoor-lora-smoke-camp-2026-07-10.
@100yenadmin 100yenadmin force-pushed the gfx/outdoor-lora-manifest branch from ad91f82 to b840150 Compare July 10, 2026 13:38
@100yenadmin 100yenadmin changed the title gfx/plate-sprint: OUTDOOR-LORA training manifest (#1481) — BLOCKED on Scenario quota gfx/plate-sprint: OUTDOOR-LORA trained + smoke tested (#1481) — camp borderline, forest_road regresses Jul 10, 2026
@100yenadmin

Copy link
Copy Markdown
Member Author

Training + smoke test complete after the owner-directed quality pass + CU top-up.

Training: model_RsWEcQL2NWXwoyEodWVE2vWG, job job_U3HDsSj7T4aPETy7MRCuX6oK, 1080 CU, ~172 min, 18 char-free quality-passed images (one swap during the pass: dropped the most architecture-dominant frame for a natural-terrain one — see training_manifest.md).

Smoke test (mint anchor -> Gemini re-registration -> overlay/edge-recall -> 5-scorer blind panel vs 6.0 baseline):

  • camp_clearing_night: candidate median 6.5 vs incumbent 6.0 (+0.5, borderline — right at the >6.5 line, one recurring firepit-ring artifact, not a clean pass)
  • forest_road: candidate median 2.0 — severe regression, all 5 scorers independently flagged broken/wireframe invented architecture, same failure mode as ARM C, worse

Full verdicts + evidence: qa/evidence/plate-sprint/outdoor-lora/SMOKE-TEST-VERDICT.md. Do not adopt either candidate off this single test — camp is a promising lead worth one more iteration, forest_road needs a different greybox shape (see root-cause hypothesis) before another LoRA attempt is worthwhile.

@evaos-code-review-bot

evaos-code-review-bot Bot commented Jul 10, 2026

Copy link
Copy Markdown

evaOS review status: completed

PR: #1498 - gfx/plate-sprint: OUTDOOR-LORA trained + smoke tested (#1481) — camp borderline, forest_road regresses
Head: b8401508664fe8c8805b8219a263bdb5ac64612d
Updated: 2026-07-10T13:39:18.374Z

evaOS review completed for this PR head.

Automation note: agents should wait for this comment to reach completed, stale_head, closed_or_merged_before_review, skipped, or failed before treating evaOS review as settled for this head. provider_deferred means evaOS still intends to retry.

PR URL: #1498

Review URL: #1498 (review)

@evaos-code-review-bot evaos-code-review-bot Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Walkthrough

PR: #1498 - gfx/plate-sprint: OUTDOOR-LORA trained + smoke tested (#1481) — camp borderline, forest_road regresses
Head: b8401508664fe8c8805b8219a263bdb5ac64612d into main. Review event: COMMENT.
Provider: GLM/Z.ai through ZCode (zcode-glm, zcode, model GLM-5.2).

Estimated review effort: 5/5 (~70 min)

Changed Files

File Status Churn Purpose Risk
qa/evidence/plate-sprint/outdoor-lora/SMOKE-TEST-VERDICT.md added +68/-0 Documentation Low
qa/evidence/plate-sprint/outdoor-lora/camp/anchor_seed42.png added +0/-0 Changed file Low
qa/evidence/plate-sprint/outdoor-lora/camp/camp_outdoorlora_registered.png added +0/-0 Changed file Low
qa/evidence/plate-sprint/outdoor-lora/camp/gemini_meta.json added +14/-0 Changed file Low
qa/evidence/plate-sprint/outdoor-lora/camp/overlay_camp_outdoorlora.png added +0/-0 Changed file Low
qa/evidence/plate-sprint/outdoor-lora/camp/panel_mapping.json added +5/-0 Changed file Low
qa/evidence/plate-sprint/outdoor-lora/camp/panel_verdict.json added +28/-0 Changed file Low
qa/evidence/plate-sprint/outdoor-lora/forest_road/anchor_seed7.png added +0/-0 Changed file Low
qa/evidence/plate-sprint/outdoor-lora/forest_road/fr_outdoorlora_registered.png added +0/-0 Changed file Low
qa/evidence/plate-sprint/outdoor-lora/forest_road/gemini_meta.json added +14/-0 Changed file Low
qa/evidence/plate-sprint/outdoor-lora/forest_road/overlay_fr_outdoorlora.png added +0/-0 Changed file Low
qa/evidence/plate-sprint/outdoor-lora/forest_road/panel_mapping.json added +5/-0 Changed file Low
qa/evidence/plate-sprint/outdoor-lora/forest_road/panel_verdict.json added +27/-0 Changed file Low
qa/evidence/plate-sprint/outdoor-lora/model_state.json added +67/-0 Changed file Moderate: validated P2 finding
qa/evidence/plate-sprint/outdoor-lora/training_manifest.md added +174/-0 Documentation Low
qa/scores.db modified +0/-0 Changed file Low
qa/scores_ledger.md modified +3/-1 Documentation Low

Review Signal

Validated inline findings: 1 (P0: 0, P1: 0, P2: 1, P3: 0).
Dropped findings before posting: 0. High-severity findings: 0.

Risk Taxonomy

  • API compatibility: 1

Validation and Proof

1 required validation/proof recommendation(s) selected from changed files.

  • required: Unity editor or Play Mode smoke - WorldOS repo profile implies Unity runtime risk. Proof: Unity editor smoke; Play Mode log; scene/prefab screenshot or recording.
    Proof status: missing - 1 required validation/proof recommendation(s) missing from PR metadata.
    Profile validation hints: Prefer correctness, persistence, CI, release, and regression findings over style-only feedback.
    Profile proof expectations: Look for Unity editor, play-mode, fixture, or focused smoke evidence when runtime behavior changes.

Related Context

Related issues/PRs: #1481, #1495.
Suggested labels: docs.
Suggested reviewers: none from current metadata.

Review Settings Preview

  • Profile: assertive
  • Enabled sections: Review summary (inline_review); Walkthrough (inline_review); Changed-files table (walkthrough); Effort estimate (walkthrough); Related issues/PRs (walkthrough); Suggested labels (suggestion_only); Review status comment (sticky_status)
  • Path instructions: Assets/** - Prioritize scene, prefab, save-state, asset-reference, and gameplay regressions.
  • Path instructions: ProjectSettings/** - Treat build, platform, input, graphics, and release behavior changes as high risk.
  • Label suggestions: unity, gameplay, regression-hardening
  • Reviewer suggestions: none
  • Suggestion behavior: suggestions only; labels and reviewers are not auto-applied.
  • Roadmap-only settings: auto-apply labels; auto-request reviewers; required status checks

Pre-merge checklist

  • Inline comments target current RIGHT-side diff lines.
  • No secret-like content survived into posted inline comments.
  • REQUEST_CHANGES is only used when eligible P0/P1 findings survive validation.
  • Required behavior proof is present or not applicable.
  • Labels and reviewers are suggestions only; the bot did not auto-apply them.

"model_name": "WorldOS Painterly Exterior (FLUX)",
"model_type": "flux.1-lora",
"scenario_project_id": "proj_sd4w3ozsJaBHYnHS4mP1S2Pw",
"status": "training",

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2: model_state.json still says status "training" while the verdict claims the model trained + smoke-tested

SMOKE-TEST-VERDICT.md:5 states the LoRA was trained ('job job_U3HDsSj7T4aPETy7MRCuX6oK, 1080 CU, ~172 min') and both panel_verdict.json files record results produced with that trained model. But model_state.json:6 still records "status": "training" and line 8 "training_started_at": "2026-07-10T10:21:49.874Z", and line 66 ('next_steps') instructs to 'Poll job_U3HDsSj7T4aPETy7MRCuX6oK via jobs_wait/job_get to completion (ETA ~1-2h)'. A model that is still in the 'training' status cannot have been the model used in the smoke test. Update model_state.json to status "trained"/"completed" with the training_completed_at timestamp + final job status (and confirm the trained model_id used in the smoke test matches this one) before this evidence is treated as a release-relevant result. This is a partial-evidence signal per the repo's RRI contract.

Category: API compatibility

Why this matters: The PR's headline finding rests on having actually run the smoke test with the trained OUTDOOR-LORA. The committed state file contradicts the claim that training finished. Per AGENTS.md, partial/harness-contaminated evidence is not a release verdict; leaving the state file un-updated makes the evidence internally inconsistent and unverifiable.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Actionable comments posted: 9

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@qa/evidence/plate-sprint/outdoor-lora/camp/panel_mapping.json`:
- Around line 2-4: Normalize the outdoor LoRA panel mapping and corresponding
forest mapping to the A/B/C contract produced by qa/plate_loop.py, including
both slot_to_label and label_to_slot fields. Use the canonical img_*.jpg slot
names consistently in mappings and verdict scores, with labels matching the
verifier’s candidate, incumbent, and control assignments; update all related
mapping data accordingly.

In `@qa/evidence/plate-sprint/outdoor-lora/camp/panel_verdict.json`:
- Around line 4-10: Normalize panel_mapping, scores, and medians to one
canonical key namespace so every panel identifier joins consistently. Update the
embedded mapping and score keys together, and use the same normalized labels
expected by ingest_verdict’s A/B/C relabeling, ensuring downstream cand, ctrl,
and delta_vs_control are populated rather than null.
- Line 27: Change the verdict in the recorded evidence from “BORDERLINE PASS” to
a failing or inconclusive classification because the candidate median of 6.5
does not satisfy the strict >6.5 success threshold. Update the surrounding
wording in the verdict field to consistently describe the result as below
threshold and not promotable, unless the scoring contract is explicitly changed
everywhere to allow 6.5.

In `@qa/evidence/plate-sprint/outdoor-lora/forest_road/gemini_meta.json`:
- Line 13: Revise the prompt’s CRITICAL STRUCTURE-LOCK to preserve the camera,
road topology, boundaries, and object anchors while explicitly allowing
placeholder trees and boulders to be reshaped into organic trunks, foliage, and
rounded rocks. Remove the requirement that those organic placeholders retain
their exact pixel silhouettes, sizes, and volumes, then rerun the forest-road
smoke test.
- Around line 9-10: The metadata contains a workstation-specific absolute asset
path in the gemini_meta.json path field. Replace it with a portable
repo-relative path or an approved shared artifact root, preserving the
referenced asset location so replay works across environments.

In `@qa/evidence/plate-sprint/outdoor-lora/forest_road/panel_mapping.json`:
- Around line 2-4: The forest-road panel mapping uses ad-hoc labels and lacks
the verifier’s A/B/C slot contract. Update the mapping and corresponding forest
verdict artifact to the exact harness schema, including slot_to_label and
label_to_slot with the expected A, B, and C slot names, so qa/plate_loop.py can
relabel slots and compute the candidate/control delta.

In `@qa/evidence/plate-sprint/outdoor-lora/model_state.json`:
- Line 45: Update the asset entry for asset_XhU3yw8GWrJx5gWLFxsrPimf in
model_state.json to set new_upload to false, keeping it consistent with the
reuse and cost details documented in training_manifest.md.

In `@qa/evidence/plate-sprint/outdoor-lora/training_manifest.md`:
- Around line 20-21: The headings “Selection rule” and “Excluded” in the
training manifest need blank lines after them to satisfy markdown formatting.
Add an empty line immediately after each heading, including the corresponding
section around the later referenced lines.

In `@qa/scores_ledger.md`:
- Line 13: Correct the cost statement in the forest-road row of
qa/scores_ledger.md to match SMOKE-TEST-VERDICT.md: record the consolidated 4
anchor mints plus 2 Gemini passes totaling 76 CU for both rooms, or explicitly
label the row’s per-room allocation and reference the consolidated cost actuals.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: 03d508db-9043-442b-89c5-6fcac61eefb3

📥 Commits

Reviewing files that changed from the base of the PR and between c9c912a and b840150.

⛔ Files ignored due to path filters (7)
  • qa/evidence/plate-sprint/outdoor-lora/camp/anchor_seed42.png is excluded by !**/*.png
  • qa/evidence/plate-sprint/outdoor-lora/camp/camp_outdoorlora_registered.png is excluded by !**/*.png
  • qa/evidence/plate-sprint/outdoor-lora/camp/overlay_camp_outdoorlora.png is excluded by !**/*.png
  • qa/evidence/plate-sprint/outdoor-lora/forest_road/anchor_seed7.png is excluded by !**/*.png
  • qa/evidence/plate-sprint/outdoor-lora/forest_road/fr_outdoorlora_registered.png is excluded by !**/*.png
  • qa/evidence/plate-sprint/outdoor-lora/forest_road/overlay_fr_outdoorlora.png is excluded by !**/*.png
  • qa/scores.db is excluded by !**/*.db
📒 Files selected for processing (10)
  • qa/evidence/plate-sprint/outdoor-lora/SMOKE-TEST-VERDICT.md
  • qa/evidence/plate-sprint/outdoor-lora/camp/gemini_meta.json
  • qa/evidence/plate-sprint/outdoor-lora/camp/panel_mapping.json
  • qa/evidence/plate-sprint/outdoor-lora/camp/panel_verdict.json
  • qa/evidence/plate-sprint/outdoor-lora/forest_road/gemini_meta.json
  • qa/evidence/plate-sprint/outdoor-lora/forest_road/panel_mapping.json
  • qa/evidence/plate-sprint/outdoor-lora/forest_road/panel_verdict.json
  • qa/evidence/plate-sprint/outdoor-lora/model_state.json
  • qa/evidence/plate-sprint/outdoor-lora/training_manifest.md
  • qa/scores_ledger.md
📜 Review details
⏰ Context from checks skipped due to timeout. (7)
  • GitHub Check: CodeRabbit / Review
  • GitHub Check: test
  • GitHub Check: viewer-tests
  • GitHub Check: Analyze (python)
  • GitHub Check: Analyze (csharp)
  • GitHub Check: viewer-tests
  • GitHub Check: test
🧰 Additional context used
📓 Path-based instructions (1)
**/*

📄 CodeRabbit inference engine (AGENTS.md)

**/*: Treat /Users/lume/WorldOS as the canonical local Mac app/private-art checkout for WorldOS GUI and native-app testing.
Use /Volumes/LEXAR/Codex for Codex artifacts, scratch files, screenshots, reports, and downloaded CI/VM artifacts.
Before install, build, or test commands, verify pwd; GUI/native app runs must use /Users/lume/WorldOS or an approved same-disk worktree configuration.
Use the codex/ prefix for new branches unless instructed otherwise.

Files:

  • qa/evidence/plate-sprint/outdoor-lora/camp/panel_mapping.json
  • qa/evidence/plate-sprint/outdoor-lora/forest_road/panel_mapping.json
  • qa/evidence/plate-sprint/outdoor-lora/model_state.json
  • qa/evidence/plate-sprint/outdoor-lora/camp/gemini_meta.json
  • qa/evidence/plate-sprint/outdoor-lora/forest_road/panel_verdict.json
  • qa/evidence/plate-sprint/outdoor-lora/SMOKE-TEST-VERDICT.md
  • qa/evidence/plate-sprint/outdoor-lora/camp/panel_verdict.json
  • qa/evidence/plate-sprint/outdoor-lora/forest_road/gemini_meta.json
  • qa/scores_ledger.md
  • qa/evidence/plate-sprint/outdoor-lora/training_manifest.md
🪛 markdownlint-cli2 (0.22.1)
qa/evidence/plate-sprint/outdoor-lora/training_manifest.md

[warning] 20-20: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below

(MD022, blanks-around-headings)


[warning] 73-73: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below

(MD022, blanks-around-headings)

🔇 Additional comments (6)
qa/evidence/plate-sprint/outdoor-lora/model_state.json (1)

6-8: 🗄️ Data Integrity & Integration

Refresh the model-state snapshot after smoke testing.

status: "training" and next_steps still describe a pre-completion state, while SMOKE-TEST-VERDICT.md records results from this job. This is the same stale-state concern raised in the previous review. Mark the job completed/failed with its final timestamp, or explicitly label this JSON as a historical pre-smoke snapshot. Confidence: 99%.

Also applies to: 66-66

qa/evidence/plate-sprint/outdoor-lora/training_manifest.md (1)

65-71: 🔒 Security & Privacy

Verify that the documented provenance permits ML training.

Lines 65–71 rely on prior owner approval and labels such as “editorial/reference use,” but do not record permissions covering dataset ingestion or model distribution. Confirm explicit rights or replace sources with assets whose terms cover this use. Confidence: 88%.

qa/evidence/plate-sprint/outdoor-lora/SMOKE-TEST-VERDICT.md (1)

1-69: LGTM!

qa/scores_ledger.md (1)

13-14: 🗄️ Data Integrity & Integration

visual is a supported surface here. qa/scores_ledger.md is generated from qa/scores.db, and the visual-critic lane explicitly logs surface="visual"; these rows belong in the ledger as-is.

			> Likely an incorrect or invalid review comment.
qa/evidence/plate-sprint/outdoor-lora/forest_road/panel_verdict.json (1)

4-10: 🗄️ Data Integrity & Integration

Drop this namespace warning. qa/plate_loop.py:ingest_verdict() already remaps blind-slot keys through slot_to_label, and this evidence JSON is not the harness contract, so the mixed img_*/role keys here do not create a score-join bug. Confidence: 93%.

			> Likely an incorrect or invalid review comment.
qa/evidence/plate-sprint/outdoor-lora/camp/gemini_meta.json (1)

9-10: 🗄️ Data Integrity & Integration

No path rewrite neededassets[0].path is a machine-local download path captured for provenance; asset_id is the stable replay key. Changing it to a repo-relative/canonical path would strip audit trail value without improving reuse. Confidence 87%.

			> Likely an incorrect or invalid review comment.

Comment on lines +2 to +4
"img_1.jpg": "CONTROL",
"img_2.jpg": "INCUMBENT_CAMP_V2",
"img_3.jpg": "CANDIDATE_CAMP_OUTDOORLORA"

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🗄️ Data Integrity & Integration | 🟠 Major | ⚡ Quick win

Emit the panel-mapping contract consumed by the verifier.

This file omits slot_to_label and label_to_slot, and its labels do not match the A/B/C contract generated by qa/plate_loop.py at Line 356-430. As written, downstream ingestion cannot reliably identify candidate, incumbent, or control medians.

Normalize this file and the forest mapping to one exact slot namespace:

Proposed contract
-{
-  "img_1.jpg": "CONTROL",
-  "img_2.jpg": "INCUMBENT_CAMP_V2",
-  "img_3.jpg": "CANDIDATE_CAMP_OUTDOORLORA"
-}
+{
+  "slot_to_label": {
+    "image_1": "C",
+    "image_2": "B",
+    "image_3": "A"
+  },
+  "label_to_slot": {
+    "A": "image_3",
+    "B": "image_2",
+    "C": "image_1"
+  },
+  "labels": {
+    "A": "candidate",
+    "B": "incumbent-canonical",
+    "C": "disguised-real-art-control"
+  }
+}

If img_*.jpg is the canonical slot naming, use those exact keys consistently in both the mapping and verdict scores.

Confidence: 99%.

📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
"img_1.jpg": "CONTROL",
"img_2.jpg": "INCUMBENT_CAMP_V2",
"img_3.jpg": "CANDIDATE_CAMP_OUTDOORLORA"
{
"slot_to_label": {
"image_1": "C",
"image_2": "B",
"image_3": "A"
},
"label_to_slot": {
"A": "image_3",
"B": "image_2",
"C": "image_1"
},
"labels": {
"A": "candidate",
"B": "incumbent-canonical",
"C": "disguised-real-art-control"
}
}
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@qa/evidence/plate-sprint/outdoor-lora/camp/panel_mapping.json` around lines 2
- 4, Normalize the outdoor LoRA panel mapping and corresponding forest mapping
to the A/B/C contract produced by qa/plate_loop.py, including both slot_to_label
and label_to_slot fields. Use the canonical img_*.jpg slot names consistently in
mappings and verdict scores, with labels matching the verifier’s candidate,
incumbent, and control assignments; update all related mapping data accordingly.

Comment on lines +4 to +10
"panel_mapping": {"img_1.jpg": "CONTROL", "img_2.jpg": "INCUMBENT_CAMP_V2", "img_3.jpg": "CANDIDATE_CAMP_OUTDOORLORA"},
"scores": {
"img_1_CONTROL_poe2": [9, 9, 9, 9, 9],
"img_2_INCUMBENT_CAMP_V2": [6, 6, 7, 6, 6],
"img_3_CANDIDATE": [6, 7, 6, 8, 6.5]
},
"medians": {"CONTROL": 9.0, "INCUMBENT_CAMP_V2": 6.0, "CANDIDATE": 6.5},

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🗄️ Data Integrity & Integration | 🟠 Major | ⚡ Quick win

Keep panel keys and medians in one canonical namespace.

panel_mapping declares img_1.jpg, but scores uses img_1_CONTROL_poe2, img_2_INCUMBENT_CAMP_V2, and img_3_CANDIDATE. These keys cannot be joined. Additionally, ingest_verdict expects A/B/C after relabeling, while medians uses CONTROL, INCUMBENT_CAMP_V2, and CANDIDATE; downstream cand, ctrl, and delta_vs_control therefore become null.

Normalize the embedded mapping, score keys, and medians together.

Confidence: 99%.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@qa/evidence/plate-sprint/outdoor-lora/camp/panel_verdict.json` around lines 4
- 10, Normalize panel_mapping, scores, and medians to one canonical key
namespace so every panel identifier joins consistently. Update the embedded
mapping and score keys together, and use the same normalized labels expected by
ingest_verdict’s A/B/C relabeling, ensuring downstream cand, ctrl, and
delta_vs_control are populated rather than null.

"edge_recall_vs_greybox": 0.6645,
"edge_recall_caveat": "Content-blind per #1491 -- lower than forest_road's number DESPITE being the visually cleaner, better result, because the candidate correctly reinterpreted the greybox's rectangular placeholder volumes as rounded organic forms (crates, boulders) rather than preserving their blocky edges literally. Confirms edge-recall alone is not a reliable quality signal here; the overlay + panel are the binding evidence."
},
"verdict": "BORDERLINE PASS, NOT a clean win. Candidate median 6.5 vs incumbent median 6.0 -- a +0.5 delta over the existing adopted plate, sitting exactly AT (not clearly above) the >6.5 success threshold, and well short of the 7.0+ target. No invented architecture, no characters, no melted/broken geometry -- the LoRA generalizes CLEANLY to camp, in sharp contrast to forest_road's severe regression. One consistent, real defect: 3/5 scorers independently flagged a repeated concentric-ring ground-texture artifact around the campfire (likely a training-data or diffusion-radial-falloff tell) and 2/5 flagged hanging-satchel attachment ambiguity. Given the borderline number and this recurring artifact, this is NOT a strong enough result to recommend replacing the adopted camp_clearing_night_v2 canonical_plate on its own -- it would need at least one more iteration (prompt-level fix for the ring artifact) before being a genuine promote.py-grade candidate."

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🎯 Functional Correctness | 🟠 Major | ⚡ Quick win

Do not record a strict-threshold miss as a pass.

The verdict says BORDERLINE PASS while also stating that 6.5 is exactly at, not above, the >6.5 success threshold. The score ledger uses that same strict success bar, so this artifact currently records a passing outcome for a numeric failure and could mislead promotion logic. Emit a failing/inconclusive verdict or change the threshold contract explicitly.

Confidence: 99%.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@qa/evidence/plate-sprint/outdoor-lora/camp/panel_verdict.json` at line 27,
Change the verdict in the recorded evidence from “BORDERLINE PASS” to a failing
or inconclusive classification because the candidate median of 6.5 does not
satisfy the strict >6.5 success threshold. Update the surrounding wording in the
verdict field to consistently describe the result as below threshold and not
promotable, unless the scoring contract is explicitly changed everywhere to
allow 6.5.

Comment on lines +9 to +10
"path": "/Users/lume/worldos-session-notes/plate-sprint/forest_road/outdoor_lora/fr_outdoorlora_registered.png",
"bytes": 5753219

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🗄️ Data Integrity & Integration | 🟡 Minor | ⚡ Quick win

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

pwd
printf '\n--- file ---\n'
nl -ba qa/evidence/plate-sprint/outdoor-lora/forest_road/gemini_meta.json | sed -n '1,40p'

printf '\n--- surrounding artifacts with path fields ---\n'
rg -n '"path"\s*:\s*"/Users/lume/worldos-session-notes|"/Users/lume/WorldOS|/Volumes/LEXAR/Codex' qa/evidence -g '*.json' -g '*.md' -g '*.txt' | sed -n '1,120p'

Repository: electricsheephq/WorldOS

Length of output: 234


🏁 Script executed:

#!/bin/bash
set -euo pipefail

printf 'PWD: '; pwd

printf '\n--- gemini_meta.json (first 40 lines) ---\n'
sed -n '1,40p' qa/evidence/plate-sprint/outdoor-lora/forest_road/gemini_meta.json

printf '\n--- matching path references in qa/evidence ---\n'
rg -n '"/Users/lume/worldos-session-notes|"/Users/lume/WorldOS|/Volumes/LEXAR/Codex' qa/evidence -g '*.json' -g '*.md' -g '*.txt' || true

printf '\n--- file type / size ---\n'
stat -c '%n %s bytes' qa/evidence/plate-sprint/outdoor-lora/forest_road/gemini_meta.json

Repository: electricsheephq/WorldOS

Length of output: 7265


Replace the local absolute asset path

qa/evidence/plate-sprint/outdoor-lora/forest_road/gemini_meta.json still hardcodes /Users/lume/worldos-session-notes/..., so replay only works on one workstation. Use a repo-relative path, /Users/lume/WorldOS/..., or an approved artifact root like /Volumes/LEXAR/Codex so the metadata stays portable. Confidence: 93%.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@qa/evidence/plate-sprint/outdoor-lora/forest_road/gemini_meta.json` around
lines 9 - 10, The metadata contains a workstation-specific absolute asset path
in the gemini_meta.json path field. Replace it with a portable repo-relative
path or an approved shared artifact root, preserving the referenced asset
location so replay works across environments.

Source: Coding guidelines

"bytes": 5753219
}
],
"prompt": "Repaint this image in the painterly hand-painted CRPG environment-background style of the reference image: visible oil-brush strokes, muted painterly palette, warm-amber dusk key light raking down the dirt road falling off into cool blue-violet shadow toward the dense forest flanks. The blocky grey placeholder trees and boulders must be repainted as natural, organic tree trunks with bark texture and foliage, and rounded moss-covered boulders -- never flat-faced geometric boxes or glassy/translucent prisms.\n\nCRITICAL STRUCTURE-LOCK (non-negotiable, checked pixel-by-pixel against the original): every wall, pillar, archway, doorway, staircase, tree, boulder, road edge, and prop must stay in EXACTLY its current position, size, and shape -- do NOT move, add, remove, resize, re-project, or recompose ANYTHING; only the paint and lighting treatment changes. Do NOT introduce any repeated, cloned, or tiled decorative motifs. Do NOT add any text, letters, numbers, labels, legends, map insets, UI elements, frames, or borders. Do NOT add any characters, people, figures, or creatures.\n\nThis is a TOP-DOWN DIMETRIC (2:1 isometric) game BACKGROUND PLATE viewed at a fixed ~30-degree downward camera pitch -- you are looking DOWN onto the scene from high above and to the side, exactly like a Pillars of Eternity II pre-rendered isometric level. Keep that EXACT high dimetric bird's-eye angle: there is NO horizon and NO sky band across the top of the frame -- the top of the frame is MORE ground/canopy seen from above. Do NOT tilt the camera to an eye-level, first-person, or landscape-horizon view."

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🎯 Functional Correctness | 🟠 Major | 🏗️ Heavy lift

Relax the exact-shape lock for organic placeholders.

The prompt simultaneously requires every tree and boulder to retain its exact pixel shape and requires those same blocky volumes to become organic trunks and rounded rocks. The forest result recorded in qa/scores_ledger.md Line 13 is the direct failure mode: all five scorers saw wireframe-box/open-cubicle architecture.

Lock camera, road topology, boundaries, and object anchors, but allow silhouette and volume reinterpretation for placeholder trees and boulders before rerunning the forest-road smoke test.

Confidence: 97%.

Proposed prompt correction
- every ... tree, boulder ... must stay in EXACTLY its current position, size, and shape
+ keep the camera, road boundaries, topology, and object anchor positions fixed;
+ placeholder trees and boulders may change silhouette, volume, occlusion, and materials
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
"prompt": "Repaint this image in the painterly hand-painted CRPG environment-background style of the reference image: visible oil-brush strokes, muted painterly palette, warm-amber dusk key light raking down the dirt road falling off into cool blue-violet shadow toward the dense forest flanks. The blocky grey placeholder trees and boulders must be repainted as natural, organic tree trunks with bark texture and foliage, and rounded moss-covered boulders -- never flat-faced geometric boxes or glassy/translucent prisms.\n\nCRITICAL STRUCTURE-LOCK (non-negotiable, checked pixel-by-pixel against the original): every wall, pillar, archway, doorway, staircase, tree, boulder, road edge, and prop must stay in EXACTLY its current position, size, and shape -- do NOT move, add, remove, resize, re-project, or recompose ANYTHING; only the paint and lighting treatment changes. Do NOT introduce any repeated, cloned, or tiled decorative motifs. Do NOT add any text, letters, numbers, labels, legends, map insets, UI elements, frames, or borders. Do NOT add any characters, people, figures, or creatures.\n\nThis is a TOP-DOWN DIMETRIC (2:1 isometric) game BACKGROUND PLATE viewed at a fixed ~30-degree downward camera pitch -- you are looking DOWN onto the scene from high above and to the side, exactly like a Pillars of Eternity II pre-rendered isometric level. Keep that EXACT high dimetric bird's-eye angle: there is NO horizon and NO sky band across the top of the frame -- the top of the frame is MORE ground/canopy seen from above. Do NOT tilt the camera to an eye-level, first-person, or landscape-horizon view."
"prompt": "Repaint this image in the painterly hand-painted CRPG environment-background style of the reference image: visible oil-brush strokes, muted painterly palette, warm-amber dusk key light raking down the dirt road falling off into cool blue-violet shadow toward the dense forest flanks. The blocky grey placeholder trees and boulders must be repainted as natural, organic tree trunks with bark texture and foliage, and rounded moss-covered boulders -- never flat-faced geometric boxes or glassy/translucent prisms.\n\nCRITICAL STRUCTURE-LOCK (non-negotiable, checked pixel-by-pixel against the original): keep the camera, road boundaries, topology, and object anchor positions fixed; placeholder trees and boulders may change silhouette, volume, occlusion, and materials -- do NOT move, add, remove, resize, re-project, or recompose ANYTHING; only the paint and lighting treatment changes. Do NOT introduce any repeated, cloned, or tiled decorative motifs. Do NOT add any text, letters, numbers, labels, legends, map insets, UI elements, frames, or borders. Do NOT add any characters, people, figures, or creatures.\n\nThis is a TOP-DOWN DIMETRIC (2:1 isometric) game BACKGROUND PLATE viewed at a fixed ~30-degree downward camera pitch -- you are looking DOWN onto the scene from high above and to the side, exactly like a Pillars of Eternity II pre-rendered isometric level. Keep that EXACT high dimetric bird's-eye angle: there is NO horizon and NO sky band across the top of the frame -- the top of the frame is MORE ground/canopy seen from above. Do NOT tilt the camera to an eye-level, first-person, or landscape-horizon view."
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@qa/evidence/plate-sprint/outdoor-lora/forest_road/gemini_meta.json` at line
13, Revise the prompt’s CRITICAL STRUCTURE-LOCK to preserve the camera, road
topology, boundaries, and object anchors while explicitly allowing placeholder
trees and boulders to be reshaped into organic trunks, foliage, and rounded
rocks. Remove the requirement that those organic placeholders retain their exact
pixel silhouettes, sizes, and volumes, then rerun the forest-road smoke test.

Comment on lines +2 to +4
"img_1.jpg": "ANCHOR_CAMP_V2",
"img_2.jpg": "CONTROL",
"img_3.jpg": "CANDIDATE_FR_OUTDOORLORA"

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🗄️ Data Integrity & Integration | 🟠 Major | ⚡ Quick win

Use the verifier’s A/B/C slot contract here as well.

This mapping has the same integration defect as the camp mapping: it omits slot_to_label/label_to_slot and uses ad-hoc labels such as ANCHOR_CAMP_V2 and CANDIDATE_FR_OUTDOORLORA. qa/plate_loop.py at Line 465-497 cannot relabel these slots or compute the candidate/control delta.

Normalize this file and its forest verdict artifact to the exact harness schema and slot names.

Confidence: 99%.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@qa/evidence/plate-sprint/outdoor-lora/forest_road/panel_mapping.json` around
lines 2 - 4, The forest-road panel mapping uses ad-hoc labels and lacks the
verifier’s A/B/C slot contract. Update the mapping and corresponding forest
verdict artifact to the exact harness schema, including slot_to_label and
label_to_slot with the expected A, B, and C slot names, so qa/plate_loop.py can
relabel slots and compute the candidate/control delta.

{"asset_id": "asset_fdVzG3S1Y4jyR8ErCLqLCyvq", "file": "ext_002_ruins_oldsong.jpg", "reused_from": "worldos-poe2-clean-env-v4 (t_045.jpg)"},
{"asset_id": "asset_pkgacsDZsqxXeMRrp8bNZVRK", "file": "ext_003_temple_abbey.jpg", "reused_from": "worldos-poe2-clean-env-v4 (t_046.jpg)"},
{"asset_id": "asset_uzqFWgHgyghpnmM3QFDyfvKi", "file": "ext_004_settlement_brackenbury.jpg", "reused_from": "worldos-poe2-clean-env-v4 (t_047.jpg)"},
{"asset_id": "asset_XhU3yw8GWrJx5gWLFxsrPimf", "file": "ext_005_western_exterior_mountain.jpg", "new_upload": true, "note": "swapped in during quality pass, replacing ruins_firstfires"},

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🗄️ Data Integrity & Integration | 🟠 Major | ⚡ Quick win

Align the asset reuse flag with the manifest.

training_manifest.md Line 50 says asset_XhU3yw8GWrJx5gWLFxsrPimf was already uploaded and re-attached at no extra cost, but Line 45 records "new_upload": true. This misstates upload and cost accounting. Set the flag to false, or update the manifest if the actual operation differed. Confidence: 99%.

Proposed correction
-    {"asset_id": "asset_XhU3yw8GWrJx5gWLFxsrPimf", "file": "ext_005_western_exterior_mountain.jpg", "new_upload": true, "note": "swapped in during quality pass, replacing ruins_firstfires"},
+    {"asset_id": "asset_XhU3yw8GWrJx5gWLFxsrPimf", "file": "ext_005_western_exterior_mountain.jpg", "new_upload": false, "note": "swapped in during quality pass, replacing ruins_firstfires"},
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
{"asset_id": "asset_XhU3yw8GWrJx5gWLFxsrPimf", "file": "ext_005_western_exterior_mountain.jpg", "new_upload": true, "note": "swapped in during quality pass, replacing ruins_firstfires"},
{"asset_id": "asset_XhU3yw8GWrJx5gWLFxsrPimf", "file": "ext_005_western_exterior_mountain.jpg", "new_upload": false, "note": "swapped in during quality pass, replacing ruins_firstfires"},
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@qa/evidence/plate-sprint/outdoor-lora/model_state.json` at line 45, Update
the asset entry for asset_XhU3yw8GWrJx5gWLFxsrPimf in model_state.json to set
new_upload to false, keeping it consistent with the reuse and cost details
documented in training_manifest.md.

Comment on lines +20 to +21
## Selection rule
REAL painterly references first (Fandom PoE1/PoE2 wiki "File:" pages +

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win

Add blank lines around both headings.

markdownlint reports MD022 because ## Selection rule and ## Excluded are not followed by a blank line. Confidence: 99%.

Also applies to: 73-74

🧰 Tools
🪛 markdownlint-cli2 (0.22.1)

[warning] 20-20: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below

(MD022, blanks-around-headings)

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@qa/evidence/plate-sprint/outdoor-lora/training_manifest.md` around lines 20 -
21, The headings “Selection rule” and “Excluded” in the training manifest need
blank lines after them to satisfy markdown formatting. Add an empty line
immediately after each heading, including the corresponding section around the
later referenced lines.

Source: Linters/SAST tools

Comment thread qa/scores_ledger.md

| Run | When | SHA | Build date | Surface | DM model | Actor model | Scorer | Ruler | Lens ruler | RC | Methodology | Story | Mech | AngryDM | Behav | Sat | RRI | Crit | Img% | s/beat | cold-open s | turns/beat | combat s/beat | social s/beat | tool% | tool ms | slowest tool | Acts | Structural coverage | Engagement | Inert systems | Pass | Source | Notes |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| outdoor-lora-smoke-forest_road-2026-07-10 | 2026-07-10T13:36:04.551000+00:00 | f107e979 | | visual | | | sonnet-5 (5x independent blind scorers) | sc_38b768e2fd1b | lc_b031bd9f47e1 | | OUTDOOR-LORA smoke test (#1481): model_bfl-flux-1-dev depth-CN (str0.65/end0.6) + model_RsWEcQL2NWXwoyEodWVE2vWG (new 18-img exterior-only LoRA, loraScale0.7), seed7 anchor -> Gemini instruction-edit re-registration (structure-lock+dimetric-lock, referenceImages=anchor) over forest_road_greybox.png. Blind 3-image panel: CONTROL(poe2_control.jpg), cross-lane ANCHOR(camp_clearing_night_v2.jpg), CANDIDATE(fr_outdoorlora_registered.png). | | | | | | | | | | | | | | | | | | | | | FAIL | qa/evidence/plate-sprint/outdoor-lora/forest_road/ | SEVERE REGRESSION, NOT CONVERGED. 5/5 scorers independently flagged broken/melted/wireframe-box geometry ("disconnected wireframe boxes with doors/curtains", "nonsensical open-cubicle architecture") -- the new exterior-only LoRA still invents architecture on forest_road (mirrors ARM C interior-LoRA CB-FOREST finding, qa/evidence/.../cb_forest/panel_verdict.json, median 6.0 there vs median 2.0 here -- worse). Median 2.0 vs 6.0 baseline cap and >6.5 success bar: FAILS both. Root cause hypothesis: forest_road greybox represents trees as dense adjacent rectangular box volumes, which the model reads as architectural regardless of exterior-only training composition -- a geometry-shape bias, not purely a training-data-domain bias. Overlay+advisory edge-recall (qa/plate_overlays.py) misleadingly HIGH (0.9678) because the candidate preserved the blocky rectangular edges too literally (as walls, not trees) -- edge-recall is content-blind per #1491, visual overlay is the binding evidence. Cost: 4 anchor mints @9 CU + 1 Gemini pass, well under budget. Model: model_RsWEcQL2NWXwoyEodWVE2vWG. |

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🗄️ Data Integrity & Integration | 🟡 Minor | ⚡ Quick win

Correct the cost scope in the forest-road row.

SMOKE-TEST-VERDICT.md Lines 63–65 records 4 anchor mints plus 2 Gemini passes, totaling 76 CU for both rooms. This row says 4 anchor mints plus 1 Gemini pass, which is neither the documented total nor an explicit per-room breakdown. Scope the note clearly or link to the consolidated cost actuals. Confidence: 99%.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@qa/scores_ledger.md` at line 13, Correct the cost statement in the
forest-road row of qa/scores_ledger.md to match SMOKE-TEST-VERDICT.md: record
the consolidated 4 anchor mints plus 2 Gemini passes totaling 76 CU for both
rooms, or explicitly label the row’s per-room allocation and reference the
consolidated cost actuals.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: b840150866

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

"model_name": "WorldOS Painterly Exterior (FLUX)",
"model_type": "flux.1-lora",
"scenario_project_id": "proj_sd4w3ozsJaBHYnHS4mP1S2Pw",
"status": "training",

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Finish the model state after the smoke test

The same change adds SMOKE-TEST-VERDICT.md plus both panel verdicts showing this model finished training and was already smoke-tested, but the machine-readable resume state still says status: "training" (and its next_steps still tell the next agent to poll the job and run the smoke test). Anyone resuming #1481 from model_state.json can treat a completed lane as still in progress and rerun/continue the wrong workflow, so please update this state to the completed/smoke-tested verdict instead of the pre-completion status.

Useful? React with 👍 / 👎.

(the automated advisory metric) is misleading here: forest_road scored a deceptively HIGH 0.9678
specifically because the candidate preserved the box edges too literally (as walls, not trees),
while camp's genuinely better result scored a LOWER 0.6645 because it correctly reinterpreted
the boxes as rounded organic forms. The overlay images are the binding evidence, not the number

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Compress the committed evidence frames

This verdict now cites the overlay images as the binding visual evidence, but the newly committed PNG frames in this evidence directory are all over the repo’s visual-evidence cap from qa/evidence/README.md/docs/OPERATIONS.md (find shows ~1.19MB to ~5.75MB per frame, versus ≤400KB/frame). Merging these oversized frames bloats the repo and violates the evidence contract reviewers rely on; please downsample/compress the stills to reviewer-visible JPEG/PNG files under the cap.

Useful? React with 👍 / 👎.

Comment thread qa/scores_ledger.md
| Run | When | SHA | Build date | Surface | DM model | Actor model | Scorer | Ruler | Lens ruler | RC | Methodology | Story | Mech | AngryDM | Behav | Sat | RRI | Crit | Img% | s/beat | cold-open s | turns/beat | combat s/beat | social s/beat | tool% | tool ms | slowest tool | Acts | Structural coverage | Engagement | Inert systems | Pass | Source | Notes |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| outdoor-lora-smoke-forest_road-2026-07-10 | 2026-07-10T13:36:04.551000+00:00 | f107e979 | | visual | | | sonnet-5 (5x independent blind scorers) | sc_38b768e2fd1b | lc_b031bd9f47e1 | | OUTDOOR-LORA smoke test (#1481): model_bfl-flux-1-dev depth-CN (str0.65/end0.6) + model_RsWEcQL2NWXwoyEodWVE2vWG (new 18-img exterior-only LoRA, loraScale0.7), seed7 anchor -> Gemini instruction-edit re-registration (structure-lock+dimetric-lock, referenceImages=anchor) over forest_road_greybox.png. Blind 3-image panel: CONTROL(poe2_control.jpg), cross-lane ANCHOR(camp_clearing_night_v2.jpg), CANDIDATE(fr_outdoorlora_registered.png). | | | | | | | | | | | | | | | | | | | | | FAIL | qa/evidence/plate-sprint/outdoor-lora/forest_road/ | SEVERE REGRESSION, NOT CONVERGED. 5/5 scorers independently flagged broken/melted/wireframe-box geometry ("disconnected wireframe boxes with doors/curtains", "nonsensical open-cubicle architecture") -- the new exterior-only LoRA still invents architecture on forest_road (mirrors ARM C interior-LoRA CB-FOREST finding, qa/evidence/.../cb_forest/panel_verdict.json, median 6.0 there vs median 2.0 here -- worse). Median 2.0 vs 6.0 baseline cap and >6.5 success bar: FAILS both. Root cause hypothesis: forest_road greybox represents trees as dense adjacent rectangular box volumes, which the model reads as architectural regardless of exterior-only training composition -- a geometry-shape bias, not purely a training-data-domain bias. Overlay+advisory edge-recall (qa/plate_overlays.py) misleadingly HIGH (0.9678) because the candidate preserved the blocky rectangular edges too literally (as walls, not trees) -- edge-recall is content-blind per #1491, visual overlay is the binding evidence. Cost: 4 anchor mints @9 CU + 1 Gemini pass, well under budget. Model: model_RsWEcQL2NWXwoyEodWVE2vWG. |
| outdoor-lora-smoke-camp-2026-07-10 | 2026-07-10T13:36:04.551000+00:00 | f107e979 | | visual | | | sonnet-5 (5x independent blind scorers) | sc_38b768e2fd1b | lc_b031bd9f47e1 | | OUTDOOR-LORA smoke test (#1481): model_bfl-flux-1-dev depth-CN (str0.65/end0.6) + model_RsWEcQL2NWXwoyEodWVE2vWG (new 18-img exterior-only LoRA, loraScale0.7), seed42 anchor -> Gemini instruction-edit re-registration (structure-lock+dimetric-lock, referenceImages=anchor) over camp_clearing_night_greybox.jpg. Blind 3-image panel: CONTROL(poe2_control.jpg), INCUMBENT(camp_clearing_night_v2.jpg, the actual adopted canonical_plate), CANDIDATE(camp_outdoorlora_registered.png). | | | | | | | | | | | | | | | | | | | | | | qa/evidence/plate-sprint/outdoor-lora/camp/ | BORDERLINE, modest improvement, NOT a clean pass. Candidate median 6.5 vs incumbent (camp_clearing_night_v2, the actual adopted canonical_plate) median 6.0 -- a +0.5 delta, sitting exactly AT the >6.5 success threshold (not clearly above it) and well short of the 7.0+ target. 3/5 scorers independently flagged a repeated concentric-ring/banding artifact in the dirt around the firepit ("artificial glow-radius artifact rather than natural ground texture") -- a real, consistent defect, not scorer noise. No invented architecture, no characters, no melted geometry -- generalizes cleanly here (unlike forest_road). Incumbent scorer notes (flat/repetitive cabin roof siding) independently reproduce its known backdrop_score=6.0 in room_recipes.json, cross-validating the blind methodology. Model: model_RsWEcQL2NWXwoyEodWVE2vWG. |

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Record the camp smoke verdict as a fail

For the camp smoke row, the notes and verdict say the candidate is exactly 6.5 against a strict >6.5 success bar and is “NOT a clean pass,” but the ledger leaves the Pass cell empty instead of FAIL (the DB row has pass NULL). Consumers that filter failed visual rows can miss this non-pass, and the run contract expects scored runs to close with an explicit PASS/FAIL verdict, so please stamp this borderline result as failed rather than no verdict.

Useful? React with 👍 / 👎.

Comment thread qa/scores_ledger.md

| Run | When | SHA | Build date | Surface | DM model | Actor model | Scorer | Ruler | Lens ruler | RC | Methodology | Story | Mech | AngryDM | Behav | Sat | RRI | Crit | Img% | s/beat | cold-open s | turns/beat | combat s/beat | social s/beat | tool% | tool ms | slowest tool | Acts | Structural coverage | Engagement | Inert systems | Pass | Source | Notes |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| outdoor-lora-smoke-forest_road-2026-07-10 | 2026-07-10T13:36:04.551000+00:00 | f107e979 | | visual | | | sonnet-5 (5x independent blind scorers) | sc_38b768e2fd1b | lc_b031bd9f47e1 | | OUTDOOR-LORA smoke test (#1481): model_bfl-flux-1-dev depth-CN (str0.65/end0.6) + model_RsWEcQL2NWXwoyEodWVE2vWG (new 18-img exterior-only LoRA, loraScale0.7), seed7 anchor -> Gemini instruction-edit re-registration (structure-lock+dimetric-lock, referenceImages=anchor) over forest_road_greybox.png. Blind 3-image panel: CONTROL(poe2_control.jpg), cross-lane ANCHOR(camp_clearing_night_v2.jpg), CANDIDATE(fr_outdoorlora_registered.png). | | | | | | | | | | | | | | | | | | | | | FAIL | qa/evidence/plate-sprint/outdoor-lora/forest_road/ | SEVERE REGRESSION, NOT CONVERGED. 5/5 scorers independently flagged broken/melted/wireframe-box geometry ("disconnected wireframe boxes with doors/curtains", "nonsensical open-cubicle architecture") -- the new exterior-only LoRA still invents architecture on forest_road (mirrors ARM C interior-LoRA CB-FOREST finding, qa/evidence/.../cb_forest/panel_verdict.json, median 6.0 there vs median 2.0 here -- worse). Median 2.0 vs 6.0 baseline cap and >6.5 success bar: FAILS both. Root cause hypothesis: forest_road greybox represents trees as dense adjacent rectangular box volumes, which the model reads as architectural regardless of exterior-only training composition -- a geometry-shape bias, not purely a training-data-domain bias. Overlay+advisory edge-recall (qa/plate_overlays.py) misleadingly HIGH (0.9678) because the candidate preserved the blocky rectangular edges too literally (as walls, not trees) -- edge-recall is content-blind per #1491, visual overlay is the binding evidence. Cost: 4 anchor mints @9 CU + 1 Gemini pass, well under budget. Model: model_RsWEcQL2NWXwoyEodWVE2vWG. |

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Stamp smoke rows with a reachable SHA

Both new smoke-test rows are introduced by this commit, but the ledger stamps them with f107e979, which is not in 49fe1d7's ancestry. Later score/RRI audits that join evidence to the commit graph can misattribute or drop these visual results because the recorded SHA does not identify the reviewed artifact commit, so please restamp the rows to the commit that actually carries this evidence (or a reachable ancestor in the PR).

Useful? React with 👍 / 👎.

100yenadmin pushed a commit that referenced this pull request Jul 10, 2026
Responds to chatgpt-codex-connector's latest pass on PR #1504:

- Commit the actual prompts + model_run parameters used for every generation
  (iter1/mint_prompt.txt, iter1/gemini_prompt.txt, iter2/gemini_prompt.txt) so the
  firepit-lever claims are reproducible/auditable, not just prose -- matches the
  precedent camp-armB set with its style_pass_prompt_winning.txt.
- Point the outdoor-lora 6.5 baseline citation at PR #1498 explicitly (that evidence
  dir isn't in this tree since this PR was branched fresh off main per #1493 and #1498
  hasn't merged yet) instead of implying it's already resolvable here.
- Add a methodology caveat: house_anchor == incumbent in both configs (the harness's own
  default pattern, matching most other plate-sprint configs, not unique to this PR) means
  the incumbent's blind score is a same-file tell. Documented rather than silently
  present -- doesn't change the converged/NOT-CONVERGED verdict, which never depends on
  the incumbent's score (only candidate-vs-bar and candidate-vs-control).
- Re-verified (re-viewed both committed 1344x768 JPEGs directly) that the concentric-ring
  artifact remains clearly visible after the downsample -- the panel scores stand; a
  resize-only downsample doesn't change what was visually judged.
100yenadmin added a commit that referenced this pull request Jul 10, 2026
…ng 6.0 (#1481) (#1504)

* qa: CAMP-PASS2 evidence — firepit-ring artifact NOT fixed, ceiling at 6.0 (#1481)

One more refinement pass on camp_clearing_night per the OUTDOOR-LORA smoke test's
borderline 6.5 result (qa/evidence/plate-sprint/outdoor-lora/). Attacked the recurring
firepit ring-artifact with all 3 prescribed levers across 2 iterations, best-of-3 each:

- iter1: firepit-pin prompt clause (base mint + Gemini) + lorasScale 0.70/0.65/0.60
  sweep + best-of-3 anchor rejection -> candidate median 6.0
- iter2: reused iter1's 3 anchors, re-ran Gemini with a stronger structure-lock
  EXCEPTION clause authorizing repaint of the ring region specifically + best-of-3
  Gemini-stage rejection -> candidate median 6.0 (identical)

NOT CONVERGED: median 6.0 both iterations vs the >=7.0 target, incumbent camp_clearing_night_v2
at 7.0, disguised real-art control at 9.0 (in-band, valid). The ring artifact was visually
present across all 6 generated candidates regardless of lever combination -- a confirmed,
reproducible ceiling on this LoRA+recipe, not a tuning gap. Do not adopt either candidate.

Two new scores_db rows (surface=visual): plate-camp-pass2-iter1-scale060-firepitpin-*,
plate-camp-pass2-iter2-scale060-structurelockexception-*. Fresh main scores.db + re-applied
rows per #1493 sequential-merge discipline. Full findings in
qa/evidence/plate-sprint/camp-pass2/README.md.

* qa: CAMP-PASS2 — address adversarial review (contract resolution, path, count)

Responds to chatgpt-codex-connector's 4 review findings on PR #1504:

- Downsample both selected candidates (were committed at Gemini's native 2744x1568
  instead of the room's 1344x768 plate contract) and recompute registration recall +
  check_plate_drift + overlays at the correct size. The prior committed candidates made
  check_plate_drift hard-reject on a size mismatch (checked=0) instead of running a real
  comparison; now both get a genuine drift readout (still advisory per #1491, and still
  noisy against the v2-specific manifest for the reason now documented in each verdict).
- Fix gallery.html.rows.json's candidate paths, which pointed at the pre-rename .png that
  no longer exists on disk (the PNG->JPEG size-trim renamed the files after the rows were
  first written); re-rendered thumbnails from the corrected paths.
- Correct the README/verdict's "6 total generated candidates" overstatement: iter1 only
  spent the Gemini pass once (on its anchor-stage best-of-3 winner), so the true count is
  3 raw anchors (best-of-3, iter1) + 4 Gemini-styled outputs (1 iter1 + 3 iter2), not 6.
- Verified but did NOT action the 4th finding (an "AGENTS.md caps frames at <=400KB" rule):
  no such rule exists in AGENTS.md or anywhere else in the repo (grepped for it) -- the
  citation does not check out. Noted as unverifiable in the PR reply; the resize above
  incidentally brings both files well under 400KB anyway.

Panel scores (visual_overall in scores_db) are unchanged -- both were scored by direct
visual inspection of the full candidate, not derived from image metadata.

* qa: CAMP-PASS2 — propagate corrected registration numbers to db/ledger/gallery

Follow-up to 127addf: that commit fixed the README and both panel_verdict.json files
with the recomputed 1344x768-contract registration/drift numbers, but left the
machine-readable surfaces (gallery.html.rows.json, qa/scores.db, qa/scores_ledger.md)
carrying the STALE pre-correction values (recall 0.7793/0.5443, drift checked=0) and the
old "6 total generated candidates" verdict text -- caught by a second adversarial review
pass on PR #1504.

- gallery.html.rows.json: registration field now carries the recomputed recall (0.8253 /
  0.5689) and a real check_plate_drift readout (checked=12) instead of the stale
  checked=0 size-mismatch hard-reject.
- qa/scores.db + qa/scores_ledger.md: both camp-pass2 rows' notes updated in place
  (same run_id, INSERT OR REPLACE) to the corrected recall numbers and the corrected
  candidate-count verdict text (3 anchors + 4 Gemini-styled outputs, not 6). Diff is
  exactly these 2 rows -- no unrelated ledger churn.

visual_overall (the panel median, 6.0) is unchanged in both rows -- only the
registration/drift metadata and verdict prose were stale, not the scored quality.

* qa: CAMP-PASS2 — fix remaining stale verdict text in gallery rows

Self-caught follow-up to a14f215: that commit fixed the top-level registration field
and the scores_db notes, but missed the nested row["panel"]["verdict"] string in
gallery.html.rows.json, which still read "6 total generated candidates". Now matches
the corrected README/panel_verdict.json text (3 raw anchors + 4 Gemini-styled outputs).

* qa: CAMP-PASS2 — address 3rd adversarial review round

Responds to the latest review pass on PR #1504:

- Add candidate_iter{1,2}_scale060.dimensions.json sidecars (width/height + sha256) so
  the "downsampled to 1344x768" correction claim is auditable from text alone, without
  needing to execute image code to confirm it (evaos-code-review-bot P3).
- Fix the stale image_2.png / image_1.png slot-filename references in each
  panel_verdict.json's panel_mapping field to the actual committed .jpg extension
  (chatgpt-codex-connector P2).
- Make iter1/iter2 config.json's generate/registration/panel paths repo-relative instead
  of absolute /Users/lume/WorldOS/... paths, so a reviewer can mechanically resolve them
  from a checked-out tree; the disguised real-art control stays an absolute out-of-tree
  path (it isn't committed, same convention camp-armB PR #1492 used) with a note
  explaining why (evaos-code-review-bot P3, advisory).
- The cost-math consistency check (evaos-code-review-bot P3, informational) required no
  change -- confirmed 107 CU / ~$2.04 is internally consistent across all files.

* qa: CAMP-PASS2 — address 4th adversarial review round

Responds to chatgpt-codex-connector's latest pass on PR #1504:

- Commit the actual prompts + model_run parameters used for every generation
  (iter1/mint_prompt.txt, iter1/gemini_prompt.txt, iter2/gemini_prompt.txt) so the
  firepit-lever claims are reproducible/auditable, not just prose -- matches the
  precedent camp-armB set with its style_pass_prompt_winning.txt.
- Point the outdoor-lora 6.5 baseline citation at PR #1498 explicitly (that evidence
  dir isn't in this tree since this PR was branched fresh off main per #1493 and #1498
  hasn't merged yet) instead of implying it's already resolvable here.
- Add a methodology caveat: house_anchor == incumbent in both configs (the harness's own
  default pattern, matching most other plate-sprint configs, not unique to this PR) means
  the incumbent's blind score is a same-file tell. Documented rather than silently
  present -- doesn't change the converged/NOT-CONVERGED verdict, which never depends on
  the incumbent's score (only candidate-vs-bar and candidate-vs-control).
- Re-verified (re-viewed both committed 1344x768 JPEGs directly) that the concentric-ring
  artifact remains clearly visible after the downsample -- the panel scores stand; a
  resize-only downsample doesn't change what was visually judged.

---------

Co-authored-by: Eva <arncalso@gmail.com>
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