LOCAL ARTIFACT · /Users/forgebot/forgeapps/channels/forgelessons/forgelessons-channel-context.html
CHANNEL CONTEXT / 17 SEP 2026
Source cut: 15:53 UTC · Live capture: 16:03 UTC
#forgelessons + relevant #miguel_forgebot history

ForgeLessons
One Place For The Full Picture

A standalone lesson-authoring and localization app. The workflow has moved forward; a few recovery and content-quality gaps still need attention.

Bottom line: v2026.09.16.5 renders live. Translation execution is now hosted, not browser-owned. General UI recovery and duplicate keys remain open in the reviewed record. English stays untouched.
2026.09.16.5Version observed live
45 TabsJohn Deere directory observed
3 Localespt-BR · es-419 · fr-CA
$10 / $300Daily / monthly AI reservation caps
01 / Current State

What Is True Now

Observed this refresh

The App Loads

Home and Billing opened without login. John Deere’s directory and User Notifications text loaded; Halliburton appears as a workbook choice.

Read-only browser checks. No new translation, sheet edit or deployment.

Open ForgeLessons ↗
Reported delivered

The Browser Is Not The Worker

Vercel-hosted jobs completed after the browser closed in the recorded release proof. The grid shows all languages, inline editing and up to 50 rows.

Worker release evidence ↗
Human decision

Support Lives Here

Adam asked to keep all ForgeLessons work—including troubleshooting—in this channel. Miguel agreed. Related history is now consolidated into this context.

Channel-home decision ↗

Superseded: monorepo extraction-in-progress wording, sign-in-only workflow, browser-must-stay-open execution, and initial missing-Sentry status. Slack’s topic/purpose still contain the old monorepo wording; they were not changed.

02 / Architecture & Data Ownership

One Action, Durable Execution

A source-linked conceptual diagram of the reported architecture—not a fresh infrastructure audit.

1 · ForgeLessons UI

Select workbook, lesson and languages. Start Redo once; display progress and Stop.

2 · Hosted Worker

Vercel Queues drives the job independently of the browser; work is bounded and recoverable.

3 · Translation + Checks

OpenRouter / Luna is the recorded provider choice. Validate language, markup and protected content.

4 · Sheets + Readback

Save through the API, verify cells, then record History. Sheets remains authoritative for Unity text.

Supabase underpins the workflow: durable job state, claims, retained outputs, reviewed locks, History, notes and image storage. Sentry and footer indicators support diagnosis. Secrets remain server-side.
Display content ≠ narration input.

For English VO preparation, exclude parenthetical text and pronounce DEF as “def.” Do not rewrite visible English or claim a pronunciation prediction was audio-tested.

Latest narration correction ↗
Simple UI ≠ no safeguards.

English, keys, formulas, markup and reviewed work remain protected. Uncertain writes require reconciliation; zero verified saves does not prove nothing reached Sheets.

General UI incident ↗
03 / How It Got Here

Key Milestones, Not Every Release

Independent repo and deployment

Google Sheets remains the source of truth; GitHub → Vercel replaces the monorepo duplicate.

Meeting and delivery thread ↗
Authoring, Option 1A and observability

Notes, images, authoring controls, no-login access, OpenRouter, refined UI and Sentry were reported delivered.

Sentry release ↗
Browser-independent translations

Hosted-worker proof plus all-language grid and inline editing shipped.

Hosted-worker proof ↗
Progress, formulas, costs and recovery

Simpler Redo, quality checks, caps and capitalization landed. General UI timeout recovery remains unfinished.

Billing evidence ↗
Reported repair dataset · September 16

83 Capitalization-Only Corrections

Target cells only, as reported in the exact-change audit. This is a repair-count graph—not a translation-quality score.

650 P-Tier Hotspot Information69
650 P-Tier Hotspots1
General UI13

English: zero reported changes. Three non-capitalization issues were left untouched: C50, C60 and E70 in 650 P-Tier Hotspot Information.

Exact changes and source audit ↗

Speed: Do Not Overclaim

Earlier “30 → 1 requests” figures were offline planning, not measured end-to-end speed. The newer HTML-heavy request-sizing fix still needs a fresh authorized throughput check.

04 / Current Visual Evidence

Real Screens, Not Mockups

Captured from the live site on September 17. Screenshots show read-only observations; they do not prove every action or backend safeguard.

Live ForgeLessons v2026.09.16.5 showing John Deere tabs and multilingual User Notifications grid
Home: 45-tab John Deere directory, all-language workflow, inline grid and status dots. Click the image to download at full resolution. Live Home ↗
Green is not linguistic approval. The loaded User Notifications text includes French in row 16’s pt-BR cell and Spanish in row 17’s pt-BR/fr-CA cells. These are review candidates; no cells were changed. The screenshot above shows the UI, while these lower-row observations are recorded in the local evidence packet.
Live Billing page showing AI caps, unknown all-services total and daily reported-cost chart
Billing: the real daily-cost graph and the distinction between reservations, charges and unknown shared costs. Live Billing ↗
05 / Cost Boundaries

Controlled AI Spend, Incomplete Total Spend

September Provider Readings

Snapshot: 17 September, 16:02:50 UTC. Figures are partial and are not final invoices.

OpenRouter · app-key usage$0.4841
Vercel · project charges$3.0096

GitHub reported net Actions charges: $0.00.

Bars compare the displayed provider figures, not allocated total ownership cost. Missing shared charges are not zero.

What The Caps Actually Cover

$10/day + $300/calendar month: conservative AI reservations, with UTC resets. The OpenRouter key also reports a $10 daily provider limit.

$4.497 monthly reservations ≠ charges. Do not add reservations to provider usage, receipts or estimates.

Shared Supabase, Sentry, Cloudflare and other unallocated costs keep the all-services total Unknown. GitHub’s separate repository budget does not create an aggregate app cap.

Scope of the released controls ↗
06 / Open Work

Fixes Are Not The Same As Finished Jobs

General UI recovery

Latest reviewed run: 102 uncertain cells, six pending. Smaller requests were released; a new completed translation run was not. Inspect retained output and actual cells before a bounded rerun. Incident ↗

Item Inspection keys

210P_GrabJoysticks appears at A343 and A401. The duplicate blocked loading in the reported incident. Establish intended identities; do not silently rename keys. Duplicate-key report ↗

Language review

Review the newly observed User Notifications candidates and the three untouched hotspot cells. Green/filled status is not a bilingual quality review. Excluded hotspot cells ↗

English protection

Miguel’s latest rule: never touch English. Live help copy still advertises deliberate editing of any cell. Confirm enforcement safely; do not write real English to test it. Controlling requirement ↗

Older open questions

Recheck Halliburton language columns, automatic workbook discovery, formula-heavy add/reorder and live ForgeBuild/ForgeBoard registration before claiming completion. Earlier blockers may be stale; this refresh did not retest them.

Recommended routing: Miguel for intended lesson content; app maintainer with Adam for recovery, policy and hosting decisions. These are not new assignments. No paid rerun or repair is authorized by this report.

07 / Durable Context

The Full Updated Channel Context

The same curated documents saved under /Users/forgebot/forgeapps/channels/forgelessons/. Expand any section for decisions, tasks, people, operating rules and source links.

SUMMARY.md

Rolling Summary

Last reviewed: 2026-09-17.

ForgeLessons is a standalone lesson-authoring/localization app at https://lessons.forgefx.dev, sourced from forgefx/forgelessons on main. #forgelessons (C0C0NLUA1F0) is now the agreed home for all related development and troubleshooting; relevant history from #miguel_forgebot has been incorporated. Old monorepo, login-only and browser-must-stay-open guidance is superseded.

Current read-only browser observation: v2026.09.16.5, John Deere's 45 tabs, two workbook choices, working Home and Billing pages. Reported architecture: Vercel hosted queue workers, Supabase durable jobs/history/notes, Google Sheets authoritative strings, OpenRouter/Luna translations. Billing exposes $10/day and $300/month AI reservation limits; all-services spend is still Unknown.

Keep English untouched. Preserve formulas/markup/keys, match label capitalization, and test only in Playground. Latest open work: General UI timed-out translations still stopped after the request-sizing fix; Item Inspection duplicate keys; outstanding target-language review candidates; English-edit UI/policy mismatch. Existing green dots and successful code releases do not certify linguistic quality or recovery of old jobs.

The visual preview includes the architecture, milestones, sourced repair-count graph, current screenshots, costs and open work. Read STATE.md and TASKS.md for exact evidence boundaries; THREADS.md/SOURCES.md retain provenance.

CHANNEL.md

---
channel: forgelessons
slack_id: C0C0NLUA1F0
visibility: public
last_reviewed: 2026-09-17
access: readable
---

ForgeLessons

Purpose Coordinate ForgeLessons lesson-authoring, localization, development and troubleshooting with Miguel, Adam and ForgeBot. Adam requested consolidating all ForgeLessons work here; Miguel agreed on September 17. Decision ↗.

Canonical Locations - App: https://lessons.forgefx.dev/home - Source: https://github.com/forgefx/forgelessons - Release branch: main; GitHub triggers Vercel. - Related evidence: #miguel_forgebot, C0AL6K34JV7; import only relevant ForgeLessons and lesson-pipeline context. - Local workspace: /Users/forgebot/forgeapps/channels/forgelessons/

Metadata Caveat Live Slack topic/purpose still say the app is in the monorepo with extraction underway. That wording is stale: subsequent explicit decisions and releases establish the standalone repository. This refresh updates local context, not Slack topic/purpose.

Access Both source channels are Slack-public within the workspace, not public internet content. App no-login operation was deliberately approved for the initial two-admin workflow; an unlisted URL is not access control. The authorized review preview is externally link-accessible, not private.

STATE.md

Current State

Last reviewed: 2026-09-17. Historical release statements below are Slack-reported, not a rerun of their tests.

Direct Observation This Refresh Fresh read-only Chrome visits to Home and Billing rendered v2026.09.16.5. Home loaded John Deere's 45-tab directory, both registered workbook choices, and 14 User Notifications strings. Billing loaded the daily graph, $10/day and $300/calendar-month AI reservation controls. No login was required. No paid generation or sheet mutations were performed. Source/production commit equality was not checked. Evidence: ../_reports/forgelessons-live-observation.json and live screenshots.

Billing snapshot: 2026-09-17T16:02:50.536Z. OpenRouter monthly key usage $0.4841; Vercel project charges $3.0096; GitHub reported net Actions charges $0.00. AI reservations $0.0843 today / $4.497 this month are NOT charges and must not be added to them. All-services total remains Unknown. Provider coverage is partial, delayed, and excludes unallocated shared costs.

New read-only observation: User Notifications row 16 shows French text in pt-BR; row 17 shows Spanish text in pt-BR and fr-CA. These are review candidates, not repaired cells. A green sheet dot is not proof of linguistic correctness.

Reported Current Architecture The browser starts/displays jobs; Vercel Queues consumers execute independently, with Supabase durable state/fenced claims and Google Sheets API write/readback. Browser-closed completion was reported verified in v2026.09.14.7. OpenRouter / GPT-5.6 Luna was the selected app API configuration; this refresh did not inspect provider secrets or trigger a model test.

Reported Delivered - Notes, step add/reorder, filtering and media support: v2026.09.10.1 (with formula-heavy authoring limitations later noted). Miguel personally reported successful mobile voice-note use. - Option 1A design refinement, no-login workflow, Meetings/Glossary/Admin, footer service indicators and Sentry; replay disabled. - Hosted worker, multilingual inline grid and 50-row pagination: v2026.09.14.7. - Live refresh, overall progress, remembered tab, all-tab status dots, paced Sheets reads, dynamic step formulas, simpler redo UI and quality guards: September 15 releases. - Billing: v2026.09.15.19; hard controls apply to AI reservations, not aggregate spend across every service. Daily token cap was removed earlier; dollar caps remain. - Wrong-language outputs get up to two corrective attempts for the affected cell, with validation and caps preserved. - Capitalization: v2026.09.16.4; 83 target-only repairs reported verified. - Latest General UI request-sizing fix was reported live; current UI version is v2026.09.16.5. Paid end-to-end speed after that fix remains unmeasured in the reviewed record.

Active Risks / Unfinished Work General UI: 102 uncertain cells and six pending after an oversized request timed out; no rerun completion appears in the reviewed thread. Item Inspection: duplicate key 210P_GrabJoysticks at A343/A401 blocked tab load; no repair confirmed. Three hotspot language/spelling cells C50/C60/E70 were deliberately excluded from capitalization-only changes. Legacy uncertain jobs require reconciliation, not blind replay.

Halliburton missing-language columns and automatic workbook discovery were older unresolved reports; current state needs a focused check. Live copy still advertises deliberate English/manual edits, which conflicts with Miguel's later blanket no-English-change direction; record this as a policy/UI gap, not proof that enforcement was tested.

MEMORY.md

Durable Channel Memory

Last reviewed: 2026-09-17
Channel: #forgelessons — C0C0NLUA1F0.

- Product goal: begin with lesson localization and spelling/grammar review, then support collaborative authoring, steps, programmer/author notes, field dictation and images. Google Sheets remains authoritative for lesson strings consumed by Unity; Supabase stores workflow records and supplemental content. Origin ↗.
- Standalone forgefx/forgelessons supersedes apps/forgelessons and the earlier ForgeLang proposal. Never treat deleted monorepo app paths as current source.
- Regional targets: Brazilian Portuguese pt-BR, Latin American Spanish es-419, Canadian French fr-CA. Preserve literal source identifiers such as pt/es rather than renaming workbook or Unity keys.
- English is read-only for agent work: Miguel's latest explicit rule is “Do not touch the english column, ever.” Earlier generic manual-editor support does not override this. Report spelling findings without applying them. Rule ↗.
- Preserve keys, formulas, HTML/XML structure, attributes, image IDs, placeholders, units, reviewed locks and newer edits. Localize only visible text. Recognized step-label formulas keep calculations; translate their text literals rather than flattening them.
- Match English Title Case and ALL CAPS in target labels, including slash-separated labels.
- UI should be simple: Redo lesson, visible whole-job progress, Stop; all languages side by side, horizontal scrolling, 50 rows/page, inline editing. Durable jobs remain an implementation detail, not a user-facing batch maze.
- Playground is the designated test tab. Never use real production lessons for mutation QA. Authorization ↗.
- Release discipline: bump the version; tests/typecheck/lint/build; push main; verify Git-triggered Vercel production SHA and rendered version. No direct vercel deploy.
- English voice-over preprocessing is separate from display strings: exclude parenthetical text; pronounce DEF as def, not letters or expansion. Pronunciation suggestions are not audio-tested proof. Correction ↗.
- Provide clickable links and meaningful progress updates; Miguel requested roughly five-minute/milestone updates and explicit blocker notices.

DECISIONS.md

Decisions

Last reviewed: 2026-09-17. Decisions are explicit human directions; implementation reports are in STATE.md.

- Centralize all ForgeLessons development and troubleshooting in #forgelessons; Adam requested, Miguel agreed. September 17 ↗.
- Use standalone forgefx/forgelessons; delete duplicate monorepo app. September 9 ↗.
- Main-only release workflow with version bump and exact live-version confirmation. September 10 ↗. Historical dev branch existence is not proof of current branch inventory.
- GitHub main → Vercel, never direct deployment commands. Deployment direction ↗.
- Remove personal sign-in/admin gates for the initial internal workflow; Adam explicitly reconfirmed the no-login choice. Decision ↗.
- OpenRouter for API flexibility; use GPT-5.6 Luna after sanity/structured tests. Decision ↗. This is not a subscription-backed web executor.
- Miguel chose Option 1A; Adam approved practical implementation without feature loss or design hacks. Design ↗.
- Adopt browser-independent worker, then multilingual grid; Miguel approved Vercel option. Worker approval ↗.
- Simplify translation UX; hide batch mechanics, retain safety controls. Redo direction ↗.
- Remove daily token cap, but later impose $10/day and $300/calendar-month dollar controls. Billing ↗.
- English must never be changed; preserve target capitalization and dynamic formulas. English rule ↗.
- Narration review excludes parentheses; DEF should be pronounced def. Voice rule ↗.

TASKS.md

Tasks And Open Loops

Last reviewed: 2026-09-17. Suggested owners below are routing recommendations, not new assignments. This context task does not authorize repairs or paid reruns.

Highest Priority - OPEN — General UI: inspect job/attempt records and actual saved cells, then agree a bounded fresh run if needed. 102 uncertain + six pending in latest reviewed thread; sizing fix alone does not finish the translation. Route: app maintainer with Miguel. Source ↗. - OPEN — Item Inspection duplicate key 210P_GrabJoysticks at A343/A401: establish intended identities; allow safe visibility without ambiguous writes. No key/cell edits authorized by this refresh. Route: Miguel + app maintainer. Source ↗. - REVIEW — User Notifications mixed-language candidates, observed live: row 16 pt-BR and row 17 pt-BR/fr-CA. Preserve source and reviewed work; do not treat a green dot as linguistic approval. - REVIEW — Three untouched hotspot cells C50, C60, E70 in 650 P-Tier Hotspot Information. Source ↗. - VERIFY — English read-only enforcement against latest requirement; current help copy still advertises deliberate editing of any cell. Do not test by writing real English.

Follow-up Verification - Measure post-sizing-fix throughput only on authorized Playground data, with spend bounded and no claim that offline planning equals measured speed. - Reconcile legacy uncertain writes before explicit retries; distinguish zero verified saves from zero actual writes. - Check current Halliburton target-column coverage and workbook auto-discovery; older reports were incomplete. - Check whether add/reorder restrictions in formula-heavy lessons remain; translation formula support does not prove row-authoring support. - Confirm ForgeBuild/ForgeBoard live registration if still wanted; earlier source registration did not prove live dashboard presence. - Security owner: verify historical credential rotation through approved systems; never copy prior credential attachments into context or preview.

Reported Resolved / Superseded - API returning HTML instead of JSON: later workbook loading and production releases supersede the September 9 blocker. - Miguel GitHub/Vercel authorization: later exact Miguel-linked commit deployment was reported successful. - Browser-open execution dependency: superseded by hosted worker release. - Initial auth-only/read-only guest instructions: superseded by explicit no-login release. - Initial missing Sentry configuration: superseded by Sentry release and reported ingestion proof. - Capitalization-only repairs and wrong-language retry implementation: reported delivered; do not reopen merely because earlier thread messages said in progress.

PEOPLE.md

People

Last reviewed: 2026-09-17. IDs resolved from Slack evidence.

- Miguel (U036N1SESP8): product workflow requirements, lesson/translation QA, day-to-day feedback; approved Playground as test surface.
- Adam Kane (U0J1D5G87): architecture, hosting, release, cost and access decisions; requested channel consolidation.
- ForgeBot (U0B9SM7MVB5): implementation, investigation, evidence-backed context maintenance. Bot release messages are reports, not independent proof in this refresh.
- Jon and River: mentioned as future field authors; this does not assign them current delivery tasks.
- Formal ownership/escalation beyond these observed roles remains unconfirmed.

THREADS.md

Important Threads

Last reviewed: 2026-09-17. All selected threads were fetched completely, not just first replies.

- Consolidate support here ↗ — current channel-home decision.
- Product origin and requirements ↗ — machine-aware localization and broader authoring goal.
- Word–Sheets–Unity drift ↗ — upstream pain, not proof of a shipped end-to-end VO integration.
- Standalone deployment/access ↗ — deployment issue later resolved; no need to recreate old access troubleshooting.
- Meeting and authoring delivery ↗ — includes final v2026.09.10.1 release after earlier incomplete attempts.
- Provider and model decision ↗ — later OpenRouter/Luna choice supersedes temporary direct-OpenAI Astra configuration.
- Design Option 1A ↗ — approved and refined, mobile user feedback.
- Sentry and footer ↗ — reported real ingestion, replay off.
- Translation architecture and UX ↗ — 139 replies read; hosted-worker, formula, progress, throughput and validation evolution.
- Markup preservation ↗ — existing row verified; that thread ended with stronger reconstruction not yet released. Later reports say HTML protections remain; do not infer exact patch closure without source inspection.
- Billing ↗ — AI hard limits versus unknown aggregate spend.
- Wrong-language recovery ↗ — targeted validation, up to two corrective attempts.
- Capitalization / English / duplicate keys ↗ — completed case repairs; unresolved duplicate-key issue.
- General UI timeout ↗ — sizing fix delivered; failed translation not rerun.
- Narration preprocessing ↗ — latest parentheses/DEF correction controls.

SOURCES.md

Sources And Coverage

Last reviewed: 2026-09-17.

Collection - #forgelessons C0C0NLUA1F0: 24 top-level messages returned, no older history indicated; all 16 replied threads at collection were read completely. - #miguel_forgebot C0AL6K34JV7: 100 recent top-level messages; older history exists. Ten directly related threads were read completely, including the 139-reply architecture thread. Unrelated equipment support, account details and private staff context were excluded from the preview. - Thread reply counts were programmatically checked: each selected thread returned its root plus the declared replies. Later Slack activity may have occurred after collection. - Private evidence: ../_reports/forgelessons-complete-evidence.json; compact thread files; standard collector packet miguel_forgebot-evidence-2026-09-17.json. Raw packets are not committed or published. - Standard collector skipped forgelessons because no local workspace existed; the scoped supplement resolved it through conversations.info, reused fetched history and collected full replies. - Live read-only evidence: ../_reports/forgelessons-live-observation.json and forgelessons-home-live.png / forgelessons-billing-live.png.

Canonical Links - App: https://lessons.forgefx.dev/home - Billing: https://lessons.forgefx.dev/billing - Repo: https://github.com/forgefx/forgelessons - Meetings: https://lessons.forgefx.dev/meetings - September 9 meeting: https://app.fireflies.ai/view/01M22QADKESZD3K82G0DSR725B (this refresh used the Slack summary, not a new transcript review). - Historical walkthrough: https://preview.forgefx.dev/forgelessons-walkthrough-highlights - Historical deep dive: https://preview.forgefx.dev/forgelessons-understanding-history - Historical QA video: https://forgemedia.forgefx.dev/videos/01ac7d57-1082-43b0-9cce-5e8096f59be5 (three disclosed chronological takes, not one continuous long translation). - Thread-level citations: THREADS.md.

Evidence Boundaries Human requests establish requirements; bot reports establish reported outcomes. Current browser observations prove displayed version and loaded read-only pages, not every backend guarantee. Historical counts, costs, test totals and performance examples retain their source date and scope. No app release, paid translation, data repair or security-setting mutation was performed for this context refresh.

RUNBOOK.md

Runbook

Last reviewed: 2026-09-17.

1. Read this context and the source thread before acting. Route ForgeLessons troubleshooting to this channel.
2. Resolve new facts against standalone forgefx/forgelessons, not old apps/forgelessons references. For coding/release work load forgelessons-release-policy and inspect live repository guidance.
3. Treat English as read-only; restrict authorized mutation QA to Playground. Inspect formulas and displayed values separately.
4. For stopped translations inspect job/attempt records, retained output, Sheets cells and History before retrying. Zero verified saves does not establish zero writes.
5. Use footer service lights as initial clues, not conclusive diagnosis. Check Sentry and exact errors; green does not prove translation correctness.
6. No silent replay of uncertain paid requests. New wrong-language corrective attempts are bounded and budgeted; old uncertain jobs require reconciliation.
7. Track AI reservations separately from charges and shared-service unknowns; retain UTC budget semantics.
8. Refresh with channels/scripts/refresh-channel-context.ts for scoped bounded evidence. Active agent performs semantic curation; extend important truncated threads to completion.
9. Preserve evidence in gitignored channels/_reports/. Update stable memory, decisions and temporary state separately; summarize last. Never publish raw Slack packets or secrets.
10. A preview is a dated review snapshot, not a live dashboard. Verify deployed marker, desktop/mobile rendering, images and crawler metadata before sharing.

Evidence & Useful Links

Coverage: 24 top-level messages from #forgelessons and 100 recent messages from #miguel_forgebot; 26 selected threads read completely. Older Miguel-channel history exists. Raw Slack packets and credential attachments are not published.

Standalone source ↗ · Meetings ↗ · Historical walkthrough ↗ · Historical QA video ↗

The QA video is a historical three-take recording with disclosed gaps, not a continuous long-running translation. This report used Slack meeting summaries, not a new Fireflies transcript review.