English | 日本語

Loopwright

An AI development and execution platform that improves its own process through records, audits, and human judgement — shown here running an editorial workflow for fictional job postings.

Recorded playback — not a live run Fictional data only A verification pass permits an in-demo preview only — never publication

This page replays a recorded run and its audit trail. The workflow pins the source posting, extracts and cross-checks FACTs, waits for human approval, generates the page copy, and then re-verifies the result independently. When the source contradicts itself, it stops instead of generating.

1. Pin the source→ 2. Extract & check FACTs→ 3. Human approval→ 4. Generate copy→ 5. Independent re-verification
The workflow stops

Source says ¥1,500 — the summary says ¥1,700

FACT from the source (line L03)
¥1,500 / hour
Conflicting summary
¥1,700 / hour

STOPPED — contradiction

Run E02 stopped at the cross-check. Approval, generation, re-verification, and preview were not executed. Reason recorded: hourly pay — the FACT is ¥1,500 (source line L03: “給与は時給1,500円。”), while the summary states ¥1,700. What you are reading is the stop record, not a generated artifact.

An audit changed the output

Unstated items are now JSON null, every run

In loop 2, the extractor represented unstated items inconsistently across runs — sometimes the string “未記載” (“not stated”), sometimes an empty string. The audit flagged this. In the improvement experiment (extraction prompt v1.1), both the instructions and the schema example were made explicit: the value of an unstated item is JSON null. The two unstated items in this posting (renewal, housing) came out as null consistently, and v1.1 has been the standard extraction prompt since. Detail: experiments/exp-002-fact-extract-prompt-v1.1.md in the repository.

Run E01 — approved and generated

Page copy generated from approved FACTs

The nine sentences below are the recorded output, verbatim. English glosses are translations for readability only — the record is the Japanese text.

企業名は架空のソラノ輪具研究所で、求人番号はFICT-J01。

— The employer is the fictional Sorano Ringgear Laboratory; the job ID is FICT-J01.

勤務地は架空の青空実験区A棟。

— The work location is Building A of the fictional Aozora Experimental District.

雇用形態は有期契約社員で、契約期間3か月。

— Employment type: fixed-term contract employee; contract period 3 months.

更新の有無は未記載。

— Whether the contract is renewed is not stated.

給与は時給1,500円で、月収は保証しない。

— Pay is ¥1,500 per hour; monthly income is not guaranteed.

勤務時間は09:00〜18:00で、休憩60分、実働8時間。

— Working hours 09:00–18:00, with a 60-minute break; 8 actual working hours.

月20日勤務は試算用の仮定である。

— Working 20 days per month is an assumption used for the estimate.

交通費は実費支給で、月上限10,000円。

— Transportation is reimbursed at actual cost, capped at ¥10,000 per month.

寮の有無と費用は未記載。

— Housing availability and cost are not stated.

Re-verification record

Verification panel

Approval: FICT-J01-approval-1 (status: approved, 2026-10-27T19:58:09+09:00; validity recomputed: valid). Input identity: pass. Grounding check: pass (9 sentences, 0 issues). Human confirmation of meaning: completed — coordinator (Muse) + Norikazu Harada, 2026-10-28T11:09:00+09:00, all 9 sentences.

PASS — permission for an in-demo preview only, not for publication (G-INV-4).

#Sentence (record)factKeyssourceLines
1企業名は架空のソラノ輪具研究所で、求人番号はFICT-J01。employer, jobIdL01
2勤務地は架空の青空実験区A棟。workLocationL01
3雇用形態は有期契約社員で、契約期間3か月。employmentType, contractPeriodL02
4更新の有無は未記載。renewalL02
5給与は時給1,500円で、月収は保証しない。salaryHourly, monthlyIncomeGuaranteeL03
6勤務時間は09:00〜18:00で、休憩60分、実働8時間。workHours, breakMinutes, actualHoursL04
7月20日勤務は試算用の仮定である。monthlyDaysAssumptionL04
8交通費は実費支給で、月上限10,000円。transport, transportCapL05
9寮の有無と費用は未記載。housingL06

Unstated items: renewal and housing are not stated in the source. They remain visible as “not stated” in the output and are excluded from approval — nothing is filled in on the reader's behalf.

Separate frame — not part of the platform

Extension experiments (loop-012 → loop-013), not merged

The following is not a platform result. It is the record of an extension experiment — placing a pattern library and a reader persona before generation — kept separate pending an inclusion decision. The change from loop-012 to loop-013 (a different reference set, and the resulting change in prose evaluation) is preserved in the records, but the extension is not merged into the platform pipeline above.

Who did what

Human judgement stays human

Direction & acceptanceDecided in conversation between Norikazu Harada and Muse (coordination). Acceptance at each step: Harada + coordinator.
Approval in this runNorikazu Harada, 2026-10-27 (approval record FICT-J01-approval-1)
Semantic confirmationCoordinator (Muse) + Harada, 2026-10-28 — a human act, shown alongside the automated checks, not replaced by them
Design / audit / production / writingSeparate OpenCode lines (design line, audit line, production line, writing line); the audit line audits independently of production

This demo shows one run end to end: FACTs extracted and checked from a fictional source posting, a human approval, copy generation, and independent re-verification. The canonical records live in the GitHub repository.