Repository navigation
Turn on the platform's scheduled work for pnpm demo; README says how a deployment does the same - #111
Merged
Conversation
Since 17.5 the platform arms no package-authored scheduled work unless the deployment sets OS_AUTOMATION_SCHEDULED_WORK_ENABLED, so on 18.1 the six daily sweeps behind M3's inbox reminders register on `pnpm demo` but never arm. Ruling C on #82: the demo boot passes the variable, `pnpm dev` keeps the platform default (off), and the README says what a deployment sets. The demo child gets `true` only when the variable is unset; an exported value, `false` included, is the operator's and wins. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017nzWFRUo2U7evMkPdVniAn
Contributor
Author
席位核对 — ACCEPT · head
|
| check | reading |
|---|---|
| shape | draft → main, line 1 Fixes #82 — ruling C …; assignee zhuangjianguo |
| CI on the head | both Validate check-runs success on e405e7b = PR head.sha |
| scope | 2 files (+12/−0): scripts/demo.mjs (the demo boot's child env only; the priming boot and pnpm dev untouched) and one README paragraph; nothing governed |
| the ruling | 6393739591 letter C: demo turns scheduled work on, pnpm dev keeps the platform default, README names the variable for deployments — all three present; an explicitly exported value (including false) wins |
| measured (dev, 18.1.0) | demo before: 3 of 12 flows bound, six sweeps "disabled by deployment policy"; after: 9 bound, automation/_status six bound=true, sys_job 6 sweep rows + platform SLA; explicit false → 3 bound; pnpm dev → 3 bound, default off |
| governed follow-up | the AGENTS.md boot-warning exemption for the six by-design notices is the maintainer's (listed in Acceptance notes) |
Landing: under the maintainer's merge authorization (project thread: 「你可以自己审核的就自己合并」).
Generated by Claude Code
This was referenced Oct 25, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fixes #82 — ruling C: pnpm demo turns on the platform's scheduled work; README says how a deployment does the same
Clause-②: no
Metadata-protocol: none
Ruling-ref: comment 6393739591 (batch #1 item 5, letter C). The 18.1 upgrade itself landed as PR #110 (
7b736a0); this is the card's last remaining piece. Sessionsession_017nzWFRUo2U7evMkPdVniAn, branchclaude/issue-82-demo-scheduled-work, heade405e7b.What changed
scripts/demo.mjs(+8): the demo boot's child environment (theenvobjectstartDemopasses toobjectstack dev --compile --ui --seed-admin) now carriesOS_AUTOMATION_SCHEDULED_WORK_ENABLED, set totrueonly when the variable is unset (process.env[VAR] ?? 'true').falseincluded, keeps their value; the platform reads anything other than1/true/on/yesas off (resolveScheduledWorkEnabledin@objectstack/types18.1.0), so an exportedfalse,0or empty value stays off. Measured below.pnpm dev(objectstack dev --ui --compileinpackage.json) is not touched: it keeps the platform default, off.README.md(+4): one paragraph after thepnpm dev/pnpm demoparagraph:pnpm demoturns the platform's scheduled work on; a deployment that wants the reminders in the inbox setsOS_AUTOMATION_SCHEDULED_WORK_ENABLED=true. The existing re-run paragraph ("Do that re-run before the daily jobs have run on the database", PR README: say what re-runningpnpm demodoes once the daily jobs have run #108) stays true and is now the normal case on a demo database, so it is unchanged.Measurements (18.1.0, clean
.objectstack/datafor every boot, same port)Flows:lineGET /api/v1/automation/_status(schedule flows)sys_jobrowspnpm demoonorigin/main7b736a0(before)12 flow(s) 3 bound to triggers6 flows declare a 'schedule' trigger but are NOT bound — disabled by deployment policy …: legal_review_sla, turn_stalled, obligation_due, payment_overdue, renewal_notice, expiration_sweep2 informational (6 more already listed above)pnpm demoon this branch (after)12 flow(s) 9 bound to triggers2 informational:bound=true: legal_review_sla, turn_stalled, obligation_due, payment_overdue, renewal_notice, expiration_sweepactive=true:flow-schedule:legal_review_sla, turn_stalled, obligation_due, payment_overdue, renewal_notice (cron0 6 * * *), expiration_sweep (cron0 7 * * *), plus the platform's ownapprovals-sla-escalation(interval)OS_AUTOMATION_SCHEDULED_WORK_ENABLED=false pnpm demoon this branch12 flow(s) 3 bound to triggers2 informational (6 more already listed above)bound=falseapprovals-sla-escalationonlypnpm devon this branch12 flow(s) 3 bound to triggers1 informational (6 more already listed above)Flows:line plus the dropped not-bound notice, and the diagnostics header.Tenancy: single, 44 plugins, noSystem started with degraded capabilities, no plugin that failed to load, on both.Seed loading completed with 404 dropped record(s) and 404 error(s) … {"inserted":820,"updated":0,"skipped":0,"errored":404,"referencesDropped":0}, the same 820 / 404 PR Upgrade the@objectstack/*dependencies from 17.4.0 to 17.7.0, walking the official upgrade checklists of 17.5, 17.6 and 17.7 #85 recorded on 17.4 and 17.7 (the persona accounts no seed may create; README and the closing note explain them).os doctor: unset →✓ Package-authored scheduled work OFF (the default) — no packaged time-triggered flow and no packaged defineJob runs on this deployment; with=true→✓ Package-authored scheduled work ON — packaged time-triggered flows and packaged defineJob cron jobs are armed (OS_AUTOMATION_SCHEDULED_WORK_ENABLED). Exit 0 both.0 6 * * */0 7 * * *; the session ran around 11:45 UTC and did not hold a server to the next fire. Armed (bound=true,sys_jobrowactive=true) is what the switch controls; PR Upgrade the@objectstack/*dependencies from 17.4.0 to 17.7.0, walking the official upgrade checklists of 17.5, 17.6 and 17.7 #85 already measured that the sweeps write the inbox when they run (45 inbox rows from the six manual triggers on 17.7).Gates (head
e405e7b, one locked batch, each exit code written to its own file before any pipe)No browser pass: this diff changes a boot script's environment and a README sentence, no surface a person clicks; the evidence is the boot banner, the automation status door and the job table above.
Acceptance notes
AGENTS.md's rule "A boot that logs warnings is not a passing boot" now meets six by-designNOT bound — disabled by deployment policynotices on everypnpm devboot (and on any boot without the variable). The ruling says the exemption sentence is the maintainer's to add; this PR does not touchAGENTS.md. Onpnpm demothe notices are gone..env*file does not opt the demo out.os devloads.env*throughdotenv-flow, which never overwrites a variable already in the process environment (dotenv-flow4.1.0,load()), and the demo child now always has the variable. An operator who wants the demo without scheduled work exportsOS_AUTOMATION_SCHEDULED_WORK_ENABLED=false(measured above). Said in the code comment; not worth a file reader in the script.pnpm demostops being re-runnable once the daily jobs have run: the seed re-asserts statuses the state machines refuse to go back to #41, as the ruling noted: with the sweeps armed, a demo database that has lived past a sweep's daily fire time has job-written rows, and the README's existing re-run paragraph says what a re-run then does.pnpm demostops being re-runnable once the daily jobs have run: the seed re-asserts statuses the state machines refuse to go back to #41 is not addressed here.@objectstack/*dependencies from 17.4.0 to 17.7.0, walking the official upgrade checklists of 17.5, 17.6 and 17.7 #85 / Upgrade the@objectstack/*dependencies from 17.7.0 to 18.1.0, walking the official upgrade checklists of 18.0 and 18.1 #110; this PR is ruling C only.🤖 Generated with Claude Code
https://claude.ai/code/session_017nzWFRUo2U7evMkPdVniAn