Repository navigation
Docs code samples, family close-out: workflows, approvals, actions and cel pages show flow and view samples that @objectstack/spec 17.7.0 refuses; add a docs-sample parse gate so the family stays closed #316
Description
Activity
objectstack-fleet commented
on Oct 6, 2026 ContributorAuthorMore actionsClaim: PM loop,
repo:objectosseat
Session:session_01FeA1nwBz1ohH65dvffUGKr
Account:hotlong(the seat's linked user, asGET /useranswers it; always the card's assignee)
Branch:claude/pm-dispatch-objectos-ju9td1, the session's one designated push branch. This card is staged on a local branch cut fromorigin/main@cf449fa. It shares no page with #307 (PR #315:views,flows), and it is pushed after #307, #308 and #312.
Worktree:objectos-issue-316
Domain: n/a (single-lane repo)
Seat:repo:objectos(objectstack-ai/objectstack#9831)
File surface:- English
content/docs/**pages whose code samples the current published@objectstack/specrefuses, starting withbuild/automation/{workflows,approvals}.mdx,build/interface/actions.mdxandreference/cel.mdx. Locale siblings follow ruling A of [Decision] An English docs correction leaves its locale siblings asserting the corrected-away claim — #59 says delete them, the seat post says leave them, and #68 blocks the pass that would fix them #256. - A docs-sample parse gate: a script under
.github/scripts/, its CI step in.github/workflows/ci.yml, and a pinned dev dependency on@objectstack/spec, withpackage.jsonandpnpm-lock.yamlupdated.
views.mdxandflows.mdxstay with #307.
Stop on breach and explain in the report.
Container & model: M,mode:subagent,model: default.
Clause-②: no
Thread-read: none
Serial constraints cleared: no. Pushes are serial on the one branch: #307 → #308 → #312 → this card.
Generated by Claude Code
- English
objectstack-fleet commented
on Oct 7, 2026 ContributorAuthorMore actionsos-dev-report
{ "issue": 316, "status": "staged", "branch": "staged/issue-316", "worktree": "/home/user/objectos-issue-316", "base": "cf449fa (origin/main at cut, per the claim). origin/main is now dc8213d (#315, #317, #318, #319), not 94ce848 as the restart note said; git merge-tree --write-tree origin/main HEAD is clean (tree 80a304d), and the gate is green on that merged tree.", "final_commit": "853ed96", "commits": [ "415e796 docs: make every docs code sample parse with @objectstack/spec 17.7.0", "853ed96 ci: parse every docs code sample against the pinned @objectstack/spec" ], "pr": null, "pr_body_draft": "/tmp/claude-0/-home-user/2224823d-3484-535e-94a5-c071ba6af395/scratchpad/issue-316/pr-body.md (first line: Fixes #316)", "session": "session_01FeA1nwBz1ohH65dvffUGKr — the parent PM seat's id (subagent)", "premise_still_valid": true, "summary": "The card's four findings hold on @objectstack/spec 17.7.0 (npm latest, objectstack 4e4e8814), and the full scan found the same defect on 19 more English pages. Commit 1 fixes every refused sample against the spec's own refusal message: 22 English pages, with each fragment's first comment saying what it is and what it omits. workflows is rewritten to the state_machine validation rule, because the XState StateMachineConfig left the spec. actions loses the non-existent flow-step and view-level placement, cel's slots and table name real keys, and agents, data/index, data-sources, apps and dashboards drop removed keys. 36 locale siblings are deleted under ruling A. Commit 2 adds .github/scripts/check-doc-samples.mjs. It parses every ts/js block on every English page the way #307 did, with 22 fragment kinds, executor contracts and stack requires, and fails any block it cannot classify. It has an MDX-comment opt-out marker, a 51-case self-test, a CI step before type-check, and a Dependabot entry. The spec is pinned exactly in its own npm project outside the pnpm workspace, because as a workspace dependency it split zod in the docs build.", "files_changed": [ "content/docs/build/automation/workflows.mdx (+108 −64)", "content/docs/build/automation/approvals.mdx (+37 −8)", "content/docs/build/automation/index.mdx (+4 −4)", "content/docs/build/interface/actions.mdx (+34 −24)", "content/docs/reference/cel.mdx (+51 −22)", "content/docs/build/agents.mdx (+18 −15)", "content/docs/build/data/index.mdx (+37 −16)", "content/docs/build/data/relationships.mdx (+12 −6)", "content/docs/build/data/formulas.mdx (+6 −3)", "content/docs/build/data/validation-rules.mdx (+16 −4)", "content/docs/build/interface/apps.mdx (+5 −8)", "content/docs/build/interface/dashboards.mdx (+10 −4)", "content/docs/build/interface/forms.mdx (+11 −1)", "content/docs/build/interface/pages.mdx (+4 −0)", "content/docs/configure/data-sources.mdx (+53 −23)", "content/docs/configure/permissions/record-access.mdx (+4 −1)", "content/docs/configure/permissions/field-level-security.mdx (+1)", "content/docs/configure/permissions/permission-sets.mdx (+1)", "content/docs/quickstart.mdx (+1 −1)", "content/docs/reference/field-types.mdx (+6 −2)", "content/docs/reference/objectql.mdx (+1)", "content/docs/reference/rest-api.mdx (+9 −3)", "36 locale siblings deleted: build/automation/{workflows,index}.{zh-Hans,zh-Hant}.mdx; build/interface/{actions}.{de,es,fr,ja,ko,zh-Hans,zh-Hant}.mdx; reference/cel.{7}; build/agents.{7}; build/data/index.{7}; build/interface/{apps,dashboards}.{zh-Hans,zh-Hant}.mdx", ".github/scripts/check-doc-samples.mjs (new, 813 lines)", ".github/scripts/doc-samples/package.json + package-lock.json (new: @objectstack/spec 17.7.0, exact)", ".github/workflows/ci.yml (+25: install step, gate step)", ".github/dependabot.yml (+12: npm entry for /.github/scripts/doc-samples, objectstack group)", "tools/ci-scripts/run-self-tests.mjs (+10: SELF_TESTED entry and docblock paragraph)" ], "parse_table": { "file": "/tmp/claude-0/-home-user/2224823d-3484-535e-94a5-c071ba6af395/scratchpad/issue-316/proof/parse-table.md (per page; also in the PR body draft)", "method": "The gate itself, on 17.7.0. Statements are evaluated as published with only TS syntax removed (TypeScript transpile), and every spec constructor call is a parse. A Field.* statement is parsed as a field of an object, defineDataset is followed by DatasetSchema.parse, and a typed const x: T is parsed with TSchema. Value imports are checked against the entry point, and type imports through the TypeScript compiler. Fragments are parsed inside their smallest whole by kind. Every flow is checked against getBuiltinNodeConfigContracts, and a stack's requires is judged with its page's flows (#307). CEL strings get slot shape only. Blocks importing only non-spec packages are N/A.", "before_cf449fa_as_published": "20 pass, 29 refused, 52 unchecked (a fragment with no comment saying what it is: the gate fails it), 10 n/a, across 23 failing pages. EXIT 1.", "before_cf449fa_fragments_classified": "51 pass, 48 refused, 10 n/a, 2 skip (the two type signatures), 18 pages refused. Produced on a scratch copy of cf449fa with only the kind comments inserted. Refused per page: agents 1, approvals 3, flows 6, workflows 2, formulas 2, data/index 6, relationships 2, validation-rules 2, actions 3, apps 1, dashboards 2, forms 1, views 6, data-sources 4, record-access 1, quickstart 1, cel 4, rest-api 1.", "after_853ed96_plus_315": "98 pass, 0 refused, 0 unchecked, 10 n/a (marketplace 1, ai 3, storage 5, webhooks 1), 2 skip (cel and objectql type signatures). EXIT 0.", "full_outputs": "/tmp/claude-0/-home-user/2224823d-3484-535e-94a5-c071ba6af395/scratchpad/issue-316/proof/{red-cf449fa,red-cf449fa-classified,tip-without-315,green-tip-with-315,green-merged}.txt" }, "gate_red_green": [ "RED cf449fa (--docs on a git archive export): EXIT 1, '✗ doc samples: 81 block(s) refused or unchecked on 23 page(s) · 20 pass · 10 not a spec sample · 0 opted out'. The dispatch expected the four pages plus views/flows; measured, it is 23 pages (see deviations).", "RED 853ed96 alone (views/flows still as on cf449fa): EXIT 1, '✗ doc samples: 15 block(s) refused or unchecked on 2 page(s)': views.mdx 8, flows.mdx 7.", "GREEN 853ed96 + temporary git cherry-pick -n 4d12d0a (#315's views/flows, never committed): EXIT 0, '✓ doc samples: every ts/js block on 79 English page(s) parses with @objectstack/spec 17.7.0 · 98 pass · 10 not a spec sample · 2 opted out'. Restored with git checkout HEAD -- on both paths: blob hashes equal HEAD (views f25edbf, flows a38aafe), git diff HEAD empty, git status empty, no CHERRY_PICK_HEAD.", "GREEN merged tree (git merge-tree --write-tree origin/main HEAD, main at dc8213d, tree 80a304d): EXIT 0, the same line.", "SELF-TEST: EXIT 0, '✓ self-test: 51 case(s) hold, and each of the 22 fragment kinds has a fixture it passes and one it refuses (@objectstack/spec 17.7.0)'. Every FAIL fixture was read in --verbose and fails for its intended reason.", "PAGE-TEXT ABLATION on a scratch copy of the merged tree: retention { maxAge: '14d' } to '14d' in build/data/index.mdx (anchor count 1 to 0, mutant 0 to 1) gives EXIT 1, 'lifecycle.retention: Invalid input: expected object, received string'. Removing the objectql marker (1 to 0) gives EXIT 1, 'no fragment kind this gate knows'.", "TURBO HASH: with the npm lockfile mutated and restored, the ci-scripts test hash goes a36d68f, bd1b30c, a36d68f. A spec bump moves the self-test's cache key." ], "ruling_a": [ "DELETE workflows (zh-Hans, zh-Hant): the XState state machine with events, cond guards and type 'final' is removed; 'Events, not field writes' is reversed.", "DELETE build/automation/index (zh-Hans, zh-Hant): 'by these events' and 'states, transitions, and guards' are reversed. The zh-Hans text carried 按这些事件 and 守卫条件.", "DELETE actions (7): the flow-step surface (type 'action') and the view-level actions placement are removed.", "DELETE cel (7): tmpl for notification subjects/bodies is reversed; the usage table's keys (conditionalRequired, Validation.predicate, Flow.step.when, Action.guard) are removed or renamed.", "DELETE agents (7): the agent knowledge block, the shortTerm memory and longTerm.store, and 'manual flow' tools are removed.", "DELETE build/data/index (7): the decimal field type, field-level pattern and the own/shared/system ownership values are removed.", "DELETE apps (zh-Hans, zh-Hant): mobileNavigation is removed.", "DELETE dashboards (zh-Hans, zh-Hant): certified measures (the intro claim and the key) are removed.", "KEEP approvals, relationships, formulas, validation-rules, forms, pages, record-access, rest-api, field-level-security, permission-sets, field-types, objectql: code shape only (labels, node configs, builder signatures, option lists, resolveAs moved onto its approver, required fields blocks, comments, an invisible marker). They are stale now: reported, not blocking.", "NOTHING TO DELETE data-sources (its siblings went in #290, although its credentials and app-crm claims are reversed here) and quickstart (no siblings).", "Each deleted sibling was first confirmed to carry the claim (grep counts in the transcript). 36 files deleted; gen-zh-hant --check: 52 files match." ], "gates": [ "frozen install: pnpm install --frozen-lockfile, EXIT 0; pnpm-lock.yaml and tools/ci-scripts/package.json unchanged.", "type-check: pnpm turbo run type-check --continue --force --concurrency=2 (os-verify-lock): VERDICT command-exit 0, '✓ Types generated successfully', 1 successful, 0 cached.", "build: NEXT_PRIVATE_STANDALONE=true pnpm turbo run build --force --concurrency=2 (lock): VERDICT command-exit 0, 1 successful, 0 cached. 274 'Failed to load dynamic font … self-signed certificate' lines are OG-image font fetches blocked by this container's egress; they are non-fatal.", "test: pnpm turbo run test --force --concurrency=2 (lock): VERDICT command-exit 0, '✓ 11 self-test(s) passed' (10 before, plus check-doc-samples).", "Lock line for the final chained run: 'VERDICT command-exit 0 · held the lock 126s (2m06s) · waited 193s (3m13s)'.", "check-locale-surface: EXIT 0, '✓ every advertised URL has a source file and every source file is advertised; … neither llms consumer carries a numeric character reference, a malformed link target or an MDX comment'.", "check-positioning: EXIT 0, '✓ positioning: 4 copies equal their constants; the brand is right in 659 pages and 2 llms bodies; no stale sentence in 79 English sources and the en entry of 2 legal pages'.", "check-search-locales: EXIT 0, '✓ search locales: all 8 locales answer 200, find \"permissions\", find every own page by its title within the first 3 pages, and find nothing for a nonce'.", "gen-zh-hant --check: EXIT 0, '✓ zh-Hant: 52 generated file(s) match the zh-Hans sources byte for byte.'", "ownership with the workflow argv (git diff --name-status --no-renames origin/main...HEAD), --actor hotlong, TRANSLATION_BOT_LOGIN set: EXIT 0, '✓ 64 file(s) changed: 36 translation artifact(s) deleted, none added or modified.' Bot-actor control: EXIT 1, '… English sources and site code are authored by humans. Split them out.'", "check-translations: EXIT 0, '✓ translations gate passed'. Reported, not blocking: zh-Hans 39 stale / 39 missing; ja, de, es, fr, ko 20 stale / 59 missing. #307 reported 47/24 stale at its base: deletions moved stale to missing, and the kept-sibling pages edited here are newly stale.", "check-translation-output --self-test: EXIT 0. --files (workflow argv): EXIT 0, '✓ translation output gate passed (213 pre-existing finding(s) reported)'.", "check-node-floor --self-test: EXIT 0; run: EXIT 0, '✅ Every declared floor clears what the dependency tree requires, and the declarations agree.'", "check-half-states --self-test: EXIT 0, '✓ check-half-states self-test: 1551 cases pass.'", "check-doc-samples at 853ed96 alone: EXIT 1 by design, views/flows only. Green once #315 is in (above).", "Control bytes in all changed files: grep -P for C0 and DEL found none (exit 1)." ], "screenshots": "/tmp/claude-0/-home-user/2224823d-3484-535e-94a5-c071ba6af395/scratchpad/issue-316/shots-final/: 44 full-page PNGs ({page}-{1440,390}.png) for the 22 changed pages, measure-shoot.json, and clips/ (26 viewport clips of the changed sections at both widths). next start served the final build on :3316, and Chromium (Playwright, /opt/pw-browsers/chromium) loaded every page: HTTP 200, the right h1, scrollWidth equal to the viewport (1440/1440, 390/390). Every code box sits inside the viewport (303-1137 px at 1440, 17-373 px at 390), long lines scroll inside their box, and no page shows the marker text. Earlier run (shots/report.json): /zh-Hans/docs/build/automation/workflows, /ja/docs/build/interface/actions and /zh-Hant/docs/reference/cel answer 200 with the English body. Clips I looked at: the workflows state machine and anatomy, the actions declaration and placement, the cel examples and usage table, the agents memory table, the apps mobile note, the data-sources declaration and the objectql type signature, where the marker is invisible. None overflows. The servers I started (process groups 10369 and 29381) are stopped, and :3316 no longer answers.", "tests": "Gate self-test: 51/51, 22 of 22 kinds proven both ways. Gate runs: cf449fa red (81), 853ed96 alone red (15, views/flows), with #315 green (98/10/2), merged with main dc8213d green. Two page-text ablations red. All repo gates listed above ran at 853ed96 with git status empty afterwards.", "deviations": [ "Scope is 22 English pages, not 4. The card's Done asks for every sample on every page that declares an object, view, flow or stack to parse, and the gate it asks for covers every English page; the scan found refused or unclassifiable samples on 23 pages at cf449fa. Pages outside the named kinds (agents, apps, dashboards, pages, permissions, field-types, objectql) were fixed under the bounded in-place rule: ① same defect class; ② the fix is pinned by the spec's refusal; ③ no other claim holds those files (#317, #318 and #319 touch none of them); ④ same gate. automation/index.mdx was aligned because it restated the workflows claim this PR reverses.", "The pinned devDependency lives in its own npm project (.github/scripts/doc-samples, npm lockfile), not in the pnpm workspace. Measured: pnpm add -D on tools/ci-scripts re-resolved fumadocs-core's optional zod peer 4.4.3 to 4.6.5 while fumadocs-mdx kept 4.4.3, and rewrote the fumadocs lockfile lines #317 changes. The same happens with dedupe-peer-dependents=false; a pnpm.overrides pin would hold it, but would freeze fumadocs-core's zod. Hence: CI runs npm ci --prefix, and Dependabot gets its own entry.", "The opt-out marker's documented use is 'a counter-example, or a type signature written as an object', not counter-examples only. Its two uses today are type signatures (cel, objectql), and adding it changes nothing visible. A marker without a reason, a drifted marker and a marker on an unread block fail.", "Fragments are classified by a comment phrase table (22 kinds). #315's existing comments match it unchanged; every other fragment got a comment.", "The dispatch's mechanism assumption 'red on cf449fa: the four pages plus views/flows' did not hold: 23 pages.", "Container restart: the uncommitted pnpm-lock.yaml and tools/ci-scripts/package.json found afterwards were mine, from the first pin attempt, which carried the zod peer flip. They were restored with git checkout HEAD -- (git diff HEAD empty), and the frozen install was re-run (EXIT 0). No stash.", "Commit trailers are the model-free pair (Co-Authored-By: Claude, Claude-Session), per the agent contract and the sibling staged commit 4d12d0a. The harness reminder asked for a model-named Co-Authored-By.", "Commit 1 was amended once, through a fixup and a non-interactive autosquash onto cf449fa, to wrap long sample lines. Commit 2 was amended once for an output-path polish. Nothing was pushed, so no history is rewritten anywhere else.", "Page-text ablations used Python replacement with grep -c anchor and mutant counts on scratch copies. objectos has no scripts/ablation-replace.mjs; the repository was never mutated.", "NOT MEASURED: behaviour on a running ObjectOS runtime; the GitHub-rendered PR body, because nothing was posted (staged).", "Lock waits on a shared box: the first type-check waited 193 s; the final chained type-check, build and test waited 193 s and held the lock 126 s." ], "mcp_calls": "0", "api_writes": "1 — this os-dev-report comment (POST /repos/objectstack-ai/objectos/issues/316/comments, through the scripts/pm/fleet-write relay). Nothing pushed, no PR, no labels.", "open_questions": [], "out_of_scope_findings": [ "class: b · reach: authoring door, measured on the published @objectstack/spec 17.7.0. A notify node with title: tmpl`[{{record.priority}}] {{record.subject}}` is refused by defineFlow and by NotifyConfigSchema ('title: expected string, received object'). The contract text says otherwise: packages/spec/src/shared/expression.zod.ts's dialect table lists the `template` dialect for 'notification subjects/bodies, titleFormat, prompt templates'. Seam: spec:shared/expression.zod.ts template-dialect row → runtime:automation/io-node-config.zod.ts NotifyConfigSchema.title (z.string). The repository is objectstack-ai/objectstack. cel.mdx here now follows the parse · dedupe words: template dialect tmpl notify title notification subject expression.zod", "carrier: none · noted, not filed — prose tables still name things the spec lacks. build/data/index.mdx 'Computed' lists created, lastModified, createdBy and lastModifiedBy as field types, which are not in FieldType. reference/cel.mdx's variable table says `input` is available in 'flow steps'. Tables are outside the gate.", "carrier: none · noted, not filed — check-node-floor reads pnpm-lock.yaml only, so @objectstack/spec's engines.node >=22.0.0 in .github/scripts/doc-samples/package-lock.json is outside it. Today it is below the repo floor 22.12.0, so nothing is missed.", "carrier: none · noted, not filed — AGENTS.md says zh-Hans/zh-Hant coverage is '62 of 79 pages today'; after this PR it is 52. Number drift, for whoever next edits AGENTS.md." ] }
Generated by Claude Code
objectstack-fleet commented
on Oct 7, 2026 ContributorAuthorMore actionsos-dev-report-addendum
{ "issue": 316, "status": "staged", "addendum_to": "os-dev-report 6030445669 (staged/issue-316 @ 853ed96, kept as is for reference)", "why": "Review: the work ships as two PRs, each at most 5000 changed lines, and each English correction ships with its own ruling-A sibling deletions. The single branch was 8334 lines (+1354/−6980), which is over the human-merge threshold.", "base": "dc8213d (origin/main, re-fetched; #315, #317, #318, #319)", "branches": { "staged/issue-316-a": { "tip": "e585f02434902866a6f33ed11bca9591df534493", "commits": [ "e585f02 docs: data model, actions and automation samples parse with @objectstack/spec 17.7.0" ], "pr_first_line": "Part of #316", "pr_body_draft": "/tmp/claude-0/-home-user/2224823d-3484-535e-94a5-c071ba6af395/scratchpad/issue-316/pr-body-a.md", "pages": "build/data/index, build/interface/actions, build/automation/workflows, build/automation/index, build/automation/approvals, build/data/validation-rules, build/data/relationships, build/data/formulas, plus 18 sibling deletions (data/index 7, actions 7, workflows 2, automation/index 2)", "size_vs_dc8213d": "26 files, +254 −3800 = 4054", "governed": "check-governed-merges --test (26 three-dot paths) --additions 254 --deletions 3800: exit 0, '0 of 26 path(s) hit the register … NOT governed … size: 4054 changed line(s) (+254 / -3800) ≤ 5000'" }, "staged/issue-316-b": { "tip": "a45e68224068ec7290f6423f3d9deb28676952e0", "commits": [ "9144f75 docs: the rest of the docs code samples parse with @objectstack/spec 17.7.0", "a45e682 ci: parse every docs code sample against the pinned @objectstack/spec" ], "cut_from": "staged/issue-316-a @ e585f02", "pr_first_line": "Fixes #316", "pr_body_draft": "/tmp/claude-0/-home-user/2224823d-3484-535e-94a5-c071ba6af395/scratchpad/issue-316/pr-body-b.md", "pages": "build/agents, reference/cel, build/interface/dashboards, build/interface/apps, configure/data-sources, build/interface/forms, reference/rest-api, reference/field-types, configure/permissions/record-access, build/interface/pages, quickstart, configure/permissions/field-level-security, configure/permissions/permission-sets, reference/objectql, plus 18 sibling deletions (agents 7, cel 7, apps 2, dashboards 2), plus the whole gate (check-doc-samples.mjs, doc-samples/ npm project, ci.yml, dependabot.yml, run-self-tests.mjs)", "size_vs_a": "38 files, +1100 −3180 = 4280", "governed": "check-governed-merges --test (38 three-dot paths A...B) --additions 1100 --deletions 3180: exit 0, '0 of 38 path(s) hit the register … NOT governed … size: 4280 changed line(s) (+1100 / -3180) ≤ 5000'. Control: the combined list at 8334 lines exits 3 (Tier H). Checker: the local objectstack checkout, scripts/pm/check-governed-merges.mjs @ ba5927f7." } }, "how": "Built with git checkout 415e796 -- PATHS and git rm per group for the pages, and git checkout 853ed96 -- PATHS for the gate files. Content is byte-identical to the reviewed commits. One commit on A; B has a page commit and a separate gate commit. No stash, no push, nothing remote except this comment.", "proof_same_tree": "git merge-tree --write-tree dc8213d 853ed96 gives 80a304d0d1a0ca5cf240bce8a019462d86ae68af, and staged/issue-316-b^{tree} is 80a304d0d1a0ca5cf240bce8a019462d86ae68af: TREES EQUAL. git diff dc8213d staged/issue-316-b and git diff dc8213d 80a304d are byte-identical (cmp: 415879 bytes). git diff 80a304d staged/issue-316-b is empty. A+B against dc8213d is +1354 −6980 = 8334, the reviewed total.", "doc_samples": { "dc8213d": "EXIT 1, '✗ doc samples: 66 block(s) refused or unchecked on 21 page(s) · 35 pass · 10 not a spec sample · 0 opted out'", "A_e585f02": "EXIT 1, '✗ doc samples: 39 block(s) refused or unchecked on 14 page(s) · 62 pass · 10 not a spec sample · 0 opted out'. Exactly B's 14 pages still fail, as expected: agents 1, apps 3, dashboards 7, forms 3, pages 4, data-sources 4, field-level-security 1, permission-sets 1, record-access 1, quickstart 1, cel 7, field-types 4, objectql 1, rest-api 1. A's 7 sample-bearing pages are 38 pass (automation/index has no code block), and views/flows from #315 pass. Run with B's script via --docs on a git archive of A; the gate is not in CI on A.", "B_a45e682": "EXIT 0, '✓ doc samples: every ts/js block on 79 English page(s) parses with @objectstack/spec 17.7.0 · 98 pass · 10 not a spec sample · 2 opted out'. Self-test: EXIT 0, '✓ self-test: 51 case(s) hold, and each of the 22 fragment kinds has a fixture it passes and one it refuses (@objectstack/spec 17.7.0)'.", "parse_tables": "/tmp/claude-0/-home-user/2224823d-3484-535e-94a5-c071ba6af395/scratchpad/issue-316/split/parse-table-a.md and parse-table-b.md (also in the PR body drafts)" }, "gates_A_e585f02": [ "pnpm install --frozen-lockfile: EXIT 0", "type-check --continue --force (lock): VERDICT command-exit 0, '✓ Types generated successfully', 1 successful, 0 cached", "build NEXT_PRIVATE_STANDALONE=true --force (lock): VERDICT command-exit 0, 1 successful, 0 cached (OG font-fetch errors from egress, non-fatal)", "turbo test --force (lock): VERDICT command-exit 0, '✓ 10 self-test(s) passed'. Lock: held 111 s, waited 84 s.", "check-locale-surface: EXIT 0, '✓ every advertised URL has a source file and every source file is advertised; …'", "check-positioning: EXIT 0, '✓ positioning: 4 copies equal their constants; the brand is right in 659 pages and 2 llms bodies; no stale sentence in 79 English sources and the en entry of 2 legal pages'", "check-search-locales: EXIT 0, '✓ search locales: all 8 locales answer 200, …'", "gen-zh-hant --check: EXIT 0, '✓ zh-Hant: 58 generated file(s) match the zh-Hans sources byte for byte.'", "ownership, workflow argv (origin/main...HEAD), --actor hotlong, TRANSLATION_BOT_LOGIN set: EXIT 0, '✓ 26 file(s) changed: 18 translation artifact(s) deleted, none added or modified.' Bot-actor control: EXIT 1.", "check-translations: EXIT 0 (zh-Hans 43 stale / 35 missing; others 22 / 57, reported). translation-output --self-test: EXIT 0; --files: EXIT 0, '(235 pre-existing finding(s) reported)'. node-floor --self-test and run: EXIT 0. half-states --self-test: EXIT 0, 1551 cases." ], "gates_B_a45e682": [ "pnpm install --frozen-lockfile: EXIT 0, the workspace lockfile unchanged", "type-check --continue --force (lock): VERDICT command-exit 0, '✓ Types generated successfully', 1 successful, 0 cached", "build NEXT_PRIVATE_STANDALONE=true --force (lock): VERDICT command-exit 0, 1 successful, 0 cached", "turbo test --force (lock): VERDICT command-exit 0, '✓ 11 self-test(s) passed'. Lock: held 98 s, waited 0 s.", "check-doc-samples: EXIT 0 (above); --self-test: EXIT 0", "check-locale-surface: EXIT 0, including 'neither llms consumer carries … an MDX comment'", "check-positioning: EXIT 0, the same line as on A", "check-search-locales: EXIT 0", "gen-zh-hant --check: EXIT 0, '✓ zh-Hant: 54 generated file(s) match the zh-Hans sources byte for byte.'", "ownership against B's PR base (staged/issue-316-a...HEAD), --actor hotlong, TRANSLATION_BOT_LOGIN set: EXIT 0, '✓ 38 file(s) changed: 18 translation artifact(s) deleted, none added or modified.' Bot control: EXIT 1. Against origin/main...HEAD: EXIT 0, 64 files with 36 deleted; bot control: EXIT 1.", "check-translations: EXIT 0 (zh-Hans 39 / 39; others 20 / 59). translation-output --self-test: EXIT 0; --files (A...B): EXIT 0, '(213 pre-existing finding(s) reported)'.", "check-node-floor --self-test: EXIT 0, '✓ self-test: 17 rule case(s), 24 satisfies case(s) and 18 range case(s) …'; run: EXIT 0, '✅ Every declared floor clears what the dependency tree requires, and the declarations agree.'", "check-half-states --self-test: EXIT 0, 1551 cases. Control bytes in changed files: none." ], "notes": [ "The class-b spec finding (template dialect vs NotifyConfigSchema.title) is in PR B's Acceptance notes, for the seat to route to objectstack.", "Screenshots were not re-taken: every page is byte-identical to the reviewed work measured at 853ed96 (shots-final/).", "gen-zh-hant counts differ from the earlier report (52) because main's #318 added generated legal-page files: 54 on B, 58 on A (B deletes 4 more zh-Hant pages).", "The worktree /home/user/objectos-issue-316 is on staged/issue-316-b and clean. staged/issue-316 is untouched." ], "mcp_calls": "0", "api_writes": "1 — this addendum comment (POST /repos/objectstack-ai/objectos/issues/316/comments, through the scripts/pm/fleet-write relay). Nothing pushed, no PR, no labels." }
Generated by Claude Code
- added a commit that references this issue
on Oct 7, 2026 objectstack-fleet commented
on Oct 7, 2026 ContributorAuthorMore actionsACCEPT: PR #320 (part 1 of #316) on head
c57caa2cb55343b772648571f94f6143d3642611· 2026-10-07T04:05Z. I am landing it now: no governed path is touched, it is under the human-merge line, and every check is green.Path surface (
get_files): 26 files, +254/−3800 = 4054 changed lines.- 8 English pages:
build/data/{index,relationships,formulas,validation-rules},build/interface/actions,build/automation/{workflows,index,approvals}. - 18 locale siblings deleted.
- Governed check:
check-governed-merges --teston these paths with this size answers "NOT governed … 4054 ≤ 5000". The full Docs code samples, family close-out: workflows, approvals, actions and cel pages show flow and view samples that @objectstack/spec 17.7.0 refuses; add a docs-sample parse gate so the family stays closed #316 change is 8334 lines, so it ships as this PR plus PR B, which is stacked on top and carriesFixes #316.
Checks on
c57caa2:build,Ownership & freshnessandNode floorsucceeded;Deploy docswas skipped.mergeable_stateis clean on basedc8213d.Push: fast-forward with no force.
ff/issue-316-astarts at the remote branch heade463447, mergesorigin/main@dc8213d(the diff againstmainis then empty), and cherry-pickse585f02.git diff origin/main c57caa2is byte-identical togit diff dc8213d e585f02.Review against
@objectstack/spec17.7.0, the npm latest:- Parse results: these pages go from 11 pass / 16 refused / 11 unchecked to 38 pass, using Docs code samples the current @objectstack/spec refuses: the remaining view fragments in build/interface/views.mdx and the send_email flow action in build/automation/flows.mdx #307's method plus fragment classification. On this head the only remaining failures in the English corpus are on PR B's 14 pages.
- Spot checks against the spec on objectstack
origin/main:workflowsnow declares the lifecycle as astate_machinevalidation rule. The spec names this as the home of record status transitions (ADR-0020;automation/index.ts:74,agent.zod.ts:351-368). The removed XStateStateMachineConfigis gone from the spec.data/indexdropsdecimal:FieldType(data/field.zod.ts:42-62) hasnumber,currencyandpercent, and nodecimal.
- Ruling A of [Decision] An English docs correction leaves its locale siblings asserting the corrected-away claim — #59 says delete them, the seat post says leave them, and #68 blocks the pass that would fix them #256, as written in
AGENTS.mdstep 3 and indocs/TRANSLATION.mdrule 3 (docs(translation): delete siblings only when a correction reverses a capability claim #319):workflows,automation/index,actionsanddata/indexremove or reverse capability assertions, so their 18 siblings are deleted. Each sibling was confirmed to carry the claim before it was deleted.approvals,relationships,formulasandvalidation-ruleschange code shape only, so their siblings stay; they are now stale, which is reported but not blocking.- Ownership with the workflow argv: "26 file(s) changed: 18 translation artifact(s) deleted, none added or modified". The bot-actor control exits 1.
Next: PR B (
staged/issue-316-b), with the other 14 pages, their 18 siblings and thecheck-doc-samplesCI gate. It is pushed on top of this squash and closes #316.
Generated by Claude Code
- 8 English pages:
objectstack-fleet commented
on Oct 7, 2026 ContributorAuthorMore actionsACCEPT: PR #321 (closes #316) on head
a8ce2ea2bc7a09a34ffa9b4ed19ebb98c1b4c5bd· 2026-10-07T04:11Z. I am landing it after #320's deploy smoke finishes: no governed path is touched, it is under the human-merge line, and every check is green.Path surface (
get_files): 38 files, +1100/−3180 = 4280 changed lines.- 14 English pages.
- 18 locale siblings deleted.
- The gate:
.github/scripts/check-doc-samples.mjs, its own npm project.github/scripts/doc-samples/(@objectstack/spec17.7.0 pinned exactly), aci.ymlstep, adependabot.ymlentry, and therun-self-tests.mjsregistration. check-governed-merges --teston these paths with this size answers "NOT governed … 4280 ≤ 5000". None of.github/workflows/**,dependabot.ymlor.github/scripts/**is on the governed register.
Checks on
a8ce2ea:build,Ownership & freshness,Node floorand.github/dependabot.ymlsucceeded;Deploy docswas skipped.mergeable_stateis clean on base5483c4a(#320).Push: fast-forward with no force.
ff/issue-316-bstarts at the remote branch headc57caa2, mergesorigin/main@5483c4a(the diff againstmainis then empty), and cherry-picks9144f75anda45e682.git diff origin/main a8ce2eais byte-identical togit diff e585f02 a45e682. Together with #320, the change equals the reviewedstaged/issue-316tree onmain(80a304d).Review:
- Parse results. Across the whole English corpus the gate is red on
dc8213d(66 blocks on 21 pages) and red on docs: make the data, actions, workflows and approvals code samples parse with @objectstack/spec 17.7.0 (part 1 of #316) #320's tree, where only this PR's 14 pages still fail. On this head it is green: "98 pass · 10 not a spec sample · 2 opted out". - The gate itself.
- It parses every ts/js block on every English page the way Docs code samples the current @objectstack/spec refuses: the remaining view fragments in build/interface/views.mdx and the send_email flow action in build/automation/flows.mdx #307 did. That covers 22 fragment kinds, executor contracts and stack
requires. A block it cannot classify fails. - The opt-out marker needs a reason, and a drifted or unread marker fails.
- Self-test: 51 cases, and each kind has a fixture that passes and one that is refused.
- Two page-text ablations turn the gate red.
- It parses every ts/js block on every English page the way Docs code samples the current @objectstack/spec refuses: the remaining view fragments in build/interface/views.mdx and the send_email flow action in build/automation/flows.mdx #307 did. That covers 22 fragment kinds, executor contracts and stack
- Why the spec is pinned outside the pnpm workspace. As a workspace dependency it re-resolved fumadocs-core's zod peer (4.4.3 → 4.6.5), which split zod in the docs build. That was measured, and
npm ci --prefixplus its own Dependabot entry keep it from happening. - Spot check against the spec on objectstack
origin/main.build/agentsdropsknowledgeandmemory.longTerm.store. Both are tombstoned inpackages/spec/src/ai/agent.zod.ts(:44-47,:183-199, ADR-0049 enforce-or-remove). Their siblings are deleted under ruling A. - Ruling A of [Decision] An English docs correction leaves its locale siblings asserting the corrected-away claim — #59 says delete them, the seat post says leave them, and #68 blocks the pass that would fix them #256.
cel,agents,appsanddashboardsremove or reverse claims, so their 18 siblings are deleted, and each was confirmed to carry the claim first. The other pages change code shape only, so their siblings stay; they are now stale, which is reported but not blocking. Ownership with the workflow argv: 38 files, 18 deleted, none added or modified. The control exits 1.
Routed by the seat: the class-b spec finding from the PR's Acceptance notes goes to objectstack. The
templatedialect row inshared/expression.zod.tssays notification subjects and bodies take templates, butNotifyConfigSchema.titleis a plain string.After merge: watch the deploy verdict and smoke, then post the landed note here. Next on the branch is the governed
AGENTS.mdPR for #256, which the maintainer merges.
Generated by Claude Code
objectstack-fleet commented
on Oct 7, 2026 ContributorAuthorMore actionsPart 1 landed and live · 2026-10-07T04:13Z
- PR docs: make the data, actions, workflows and approvals code samples parse with @objectstack/spec 17.7.0 (part 1 of #316) #320: squash
5483c4a, merged by the seat. It isPart of #316, so this card stays open for PR docs: every docs code sample parses with @objectstack/spec 17.7.0, held by a CI gate (closes #316) #321. - CI on
main(run 37569949320):build,Node floor,Deploy docs / Publish the tested WorkerandDeploy docs / Smoke-check the live sitesucceeded; roll back was skipped. - Deploy verdict:
✓ deploy: 688ec35d-cba1-443d-9921-83448d137ec2 is serving, replacing ef9e5fb0-01f4-4d99-9129-bdf72387b01b. - Next: PR docs: every docs code sample parses with @objectstack/spec 17.7.0, held by a CI gate (closes #316) #321 (
Fixes #316) is green, ACCEPTed above, and merging now.
Generated by Claude Code
- PR docs: make the data, actions, workflows and approvals code samples parse with @objectstack/spec 17.7.0 (part 1 of #316) #320: squash
objectstack-fleet commented
on Oct 7, 2026 ContributorAuthorMore actionsLanded and live · 2026-10-07T04:21Z
- PR docs: every docs code sample parses with @objectstack/spec 17.7.0, held by a CI gate (closes #316) #321: squash
84e747a, merged by the seat, on top of PR docs: make the data, actions, workflows and approvals code samples parse with @objectstack/spec 17.7.0 (part 1 of #316) #320 (5483c4a).Fixes #316closed this card. - CI on
main(run 37570514508):buildsucceeded. It now runs the newcheck-doc-samplesstep, which passed: every ts/js sample on every English page parses with@objectstack/spec17.7.0.Node floor,Deploy docs / Publish the tested WorkerandDeploy docs / Smoke-check the live sitealso succeeded; roll back was skipped. - Deploy verdict:
✓ deploy: 4720e33d-24cf-49d1-aa59-babe0d214577 is serving, replacing 688ec35d-cba1-443d-9921-83448d137ec2. - Result:
- The docs code-sample family (Docs polish from the 2026-10-06 audit: muted-text contrast, the License table on phones, FAQ formatting, search ranking, glossary order, licence/license spelling #301, Docs code samples the current @objectstack/spec refuses: the remaining view fragments in build/interface/views.mdx and the send_email flow action in build/automation/flows.mdx #307, Docs code samples, family close-out: workflows, approvals, actions and cel pages show flow and view samples that @objectstack/spec 17.7.0 refuses; add a docs-sample parse gate so the family stays closed #316) is closed.
- 22 English pages were corrected, and 36 locale siblings were deleted under ruling A.
- The gate keeps it closed, and Dependabot bumps its pinned spec.
- Routed: the class-b spec finding (template dialect vs
NotifyConfigSchema.title) is filed as finding(spec): the expression dialect table lists notification subjects/bodies astemplateslots, but NotifyConfigSchema.title is z.string() and refuses the tmpl envelope objectstack#22054. - Housekeeping: the seat removes
pm:dispatchedfrom this card.
Generated by Claude Code
- PR docs: every docs code sample parses with @objectstack/spec 17.7.0, held by a CI gate (closes #316) #321: squash
Found while #307 was staged on 2026-10-06, measured on
@objectstack/spec17.7.0, the npmlatest. It belongs to the same family as #301 and #307: a reader who copies one of these samples gets a schema error. Priority: P2.Findings
build/automation/workflows.mdx:104defineFlowlabelmissing on the flow, and onnodes.0andnodes.3build/automation/approvals.mdx:216defineFlownodes.0.labelandnodes.4.labelmissingbuild/interface/actions.mdx:119defineViewactionsbuild/interface/actions.mdx:63,:127-133{ type: 'action', action, inputs, record }stepnodes/edgesflow shape that #307 retiredreference/cel.mdx{ when: … }stepMethod: #307's, in
scratchpad/issue-307/spec-check/scripts/{extract,flows-check,views-check,controls}.mjson the seat's box. Extract each published fenced block, strip only TS syntax, wrap it minimally, parse it, and run refusal controls. Builtin nodes are also checked againstgetBuiltinNodeConfigContracts.Done looks like
@objectstack/spec. A deliberately partial fragment says in a comment what it omits.tsandjsblocks fromcontent/docs/**/*.mdx(English only), wraps them as Docs code samples the current @objectstack/spec refuses: the remaining view fragments in build/interface/views.mdx and the send_email flow action in build/automation/flows.mdx #307 does, and fails on a refused sample. A per-block opt-out marker is allowed for intentionally invalid examples. Pin the spec version the way the repo pins its other tools, and say how it is bumped. Show it red onmainbefore the fixes and green after.Order
After #307 lands. It may be split into two PRs, the page fixes and then the gate, if that is smaller to review.
Generated by Claude Code