You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
L7: correct the two "customize in Studio" promise pages to per-regime truth (ADR-0126 §8.4) #12161
Part of #12150 (Epic: ADR-0126 implementation, v17 line — 17.x minor, maintainer-ruled). Docs lane.
Blocked-by: objectstack-ai/objectui#6301
Dispatch: coordinated under the #12150 program — ⛔ not from the general queue; the program dispatches on unlock (maintainer anti-preemption instruction, 2026-08-25, PM session session_01KWRU3s15AJz7PGW7a7wdCh). Contract: ADR-0126 §1.3 + §8 item 4 (merged 28b47a93).
Deliverable
The two shipped promise pages measured by the survey (#12049 comment 5406807988 §5) are corrected to promise what each regime actually delivers:
content/docs/capabilities/integrations.mdx:17 — "install complete apps … then customize in Studio"
content/docs/build-without-code.mdx:37 — "ready to customize in Studio"
Rewrite to the three-regime truth: views/dashboards/reports/translations/email templates → edit or overlay directly; packaged flows (and later actions) → switch off and clone your own; objects → extend with your own fields via an extension package; everything else packaged → author new siblings. The honest-negative style of import-mappings.mdx:85 is the house voice to match.
⛔ Timing is the contract: only after the L5 surface exists — correcting earlier trades an over-promise for a differently-shaped one (ADR §8.4). ⛔ Never touch content/docs/releases/** on this card.
Acceptance
Both pages promise only shipped behavior, per regime; no other doc pages widened.
Doc gates green (check:doc-authoring, link check).
{
"issue": 12161,
"status": "done",
"branch": "claude/issue-12161-promise-pages",
"pr": "https://github.com/objectstack-ai/objectstack/pull/12368",
"premise_still_valid": true,
"summary": "Rewrote the two ADR-0126 §1.3 over-promise passages to per-regime truth: content/docs/capabilities/integrations.mdx:17 (Marketplace templates bullet) and content/docs/build-without-code.mdx:37 (Setup section's Marketplace clause). Both no longer say a blanket 'customize in Studio' -- they now state views/dashboards are editable directly, a packaged flow is locked but can be switched off and cloned via Setup's packaged-automation page (edited in Studio after), and a packaged object grows only through an extension package's own fields. Verified the §8.4 timing precondition myself against objectui#6382 (merged b362c1b, closes #6301) before writing. Draft PR #12368 opened against main, head e7f41817. This is a docs-only change with no released package touched, so per AGENTS.md item 3 and the repo's real skip-changeset label mechanism (confirmed via scripts/check-empty-changeset.mjs), I applied the label myself: read current labels (['size/xs']), wrote the union (['size/xs','skip-changeset']), and read back to confirm it held -- no changeset file added.",
"tests": "Derived the exact local gate set for this diff with node scripts/pm/dispatch-gates.mjs (23 matched families vs merge-base 017130a09 of origin/main). Built the dependency closures the gates needed first (spec, formula, lint, client-react, client -- none were pre-built in the fresh worktree). All 23 ran green via scripts/pm/os-verify-lock.sh at final head e7f41817: check:doc-authoring, check:doc-anchors, check:cross-package-test-inputs (+ its node-script twin check-cross-package-test-inputs.mjs), check:doc-formula-expressions, check:doc-security-posture, spec check:docs (229 generated files in sync), check:docs-audit-scope, check:docs-redirects, check:docs-single-h1, spec check:empty-state, spec check:liveness, check:published-readme-links, check:react-page-adapter-contract, check:role-word (no new occurrences), spec check:skill-examples (256 prose examples type-check across 3 surfaces), spec check:strictness-ledger, spec check:variant-docs, check-ci-filter-parity.mjs, check-doc-frontmatter.mjs, check-doc-route-spelling.mjs, check-docs-section-name.mjs, check-section-landing-index.mjs. Re-ran dispatch-gates.mjs after the final commit to confirm the matched file set was unchanged (still exactly the same 2 files). NOT run: the CI lychee link-check workflow itself (offline binary not installed in this environment, and it is an advisory CI-only lane per .github/workflows/check-links.yml, not a local pnpm script) -- substituted a manual check instead: confirmed /docs/build-without-code (the one link added) resolves, since content/docs/build-without-code.mdx exists and is listed in content/docs/meta.json's pages array; check:doc-anchors (which does run locally) confirms 278 #fragment links resolve project-wide, though the new link carries no fragment so that gate does not directly cover it.",
"open_questions": [
{
"question": "This session's standing system-prompt declares a different terminal-report JSON schema than the one the dispatch prompt specified (issue/pr-number/pr_url/branch/head_sha/files_changed/gates-map/changeset/deviations/notes), and states that on a conflict the standing prompt wins, flagged in the report rather than silently resolved. The standing schema was used for the terminal message. Restating the dispatch-prompt's requested fields here so nothing is lost: files_changed=[content/docs/capabilities/integrations.mdx, content/docs/build-without-code.mdx]; head_sha=e7f41817bc98f51a3847d706b316eabc3637ff02; gates={all 23 matched families: pass}; changeset=skip-changeset-needed (label applied, confirmed via read-back); deviations=[amended the first commit to drop a 'Fixes #12161' trailer per the standing prompt's squash-safety rule -- card relation declared once, in the PR body only; lychee link-check not runnable locally, see tests field].",
"options": [
"A: Standing schema is correct as configured -- keep parsing it for os-dev terminal reports; no action needed.",
"B: The #12150 program coordinator expects the dispatch-prompt's schema specifically -- if so the append_system_prompt for this program should be updated so future cards in this epic report consistently."
],
"recommendation": "A, because the standing prompt is explicit that it governs on conflict and that dispatch prompts carry only per-card deltas -- flagged since it's unclear from inside this session whether the #12150 coordinator's parser was actually written against the other shape."
}
],
"out_of_scope_findings": []
}
(previous comment's marker survived only as escaped text, not the recognized token — this comment is the fallback spelling per the sanitizer note; same report as above, reposted verbatim below.)
{
"issue": 12161,
"status": "done",
"branch": "claude/issue-12161-promise-pages",
"pr": "https://github.com/objectstack-ai/objectstack/pull/12368",
"premise_still_valid": true,
"summary": "Rewrote the two ADR-0126 §1.3 over-promise passages to per-regime truth: content/docs/capabilities/integrations.mdx:17 (Marketplace templates bullet) and content/docs/build-without-code.mdx:37 (Setup section's Marketplace clause). Both no longer say a blanket 'customize in Studio' -- they now state views/dashboards are editable directly, a packaged flow is locked but can be switched off and cloned via Setup's packaged-automation page (edited in Studio after), and a packaged object grows only through an extension package's own fields. Verified the §8.4 timing precondition myself against objectui#6382 (merged b362c1b, closes #6301) before writing. Draft PR #12368 opened against main, head e7f41817. This is a docs-only change with no released package touched, so per AGENTS.md item 3 and the repo's real skip-changeset label mechanism (confirmed via scripts/check-empty-changeset.mjs), I applied the label myself: read current labels (['size/xs']), wrote the union (['size/xs','skip-changeset']), and read back to confirm it held -- no changeset file added.",
"tests": "Derived the exact local gate set for this diff with node scripts/pm/dispatch-gates.mjs (23 matched families vs merge-base 017130a09 of origin/main). Built the dependency closures the gates needed first (spec, formula, lint, client-react, client -- none were pre-built in the fresh worktree). All 23 ran green via scripts/pm/os-verify-lock.sh at final head e7f41817: check:doc-authoring, check:doc-anchors, check:cross-package-test-inputs (+ its node-script twin check-cross-package-test-inputs.mjs), check:doc-formula-expressions, check:doc-security-posture, spec check:docs (229 generated files in sync), check:docs-audit-scope, check:docs-redirects, check:docs-single-h1, spec check:empty-state, spec check:liveness, check:published-readme-links, check:react-page-adapter-contract, check:role-word (no new occurrences), spec check:skill-examples (256 prose examples type-check across 3 surfaces), spec check:strictness-ledger, spec check:variant-docs, check-ci-filter-parity.mjs, check-doc-frontmatter.mjs, check-doc-route-spelling.mjs, check-docs-section-name.mjs, check-section-landing-index.mjs. Re-ran dispatch-gates.mjs after the final commit to confirm the matched file set was unchanged (still exactly the same 2 files). NOT run: the CI lychee link-check workflow itself (offline binary not installed in this environment, and it is an advisory CI-only lane per .github/workflows/check-links.yml, not a local pnpm script) -- substituted a manual check instead: confirmed /docs/build-without-code (the one link added) resolves, since content/docs/build-without-code.mdx exists and is listed in content/docs/meta.json's pages array; check:doc-anchors (which does run locally) confirms 278 #fragment links resolve project-wide, though the new link carries no fragment so that gate does not directly cover it.",
"open_questions": [
{
"question": "This session's standing system-prompt declares a different terminal-report JSON schema than the one the dispatch prompt specified (issue/pr-number/pr_url/branch/head_sha/files_changed/gates-map/changeset/deviations/notes), and states that on a conflict the standing prompt wins, flagged in the report rather than silently resolved. The standing schema was used for the terminal message. Restating the dispatch-prompt's requested fields here so nothing is lost: files_changed=[content/docs/capabilities/integrations.mdx, content/docs/build-without-code.mdx]; head_sha=e7f41817bc98f51a3847d706b316eabc3637ff02; gates={all 23 matched families: pass}; changeset=skip-changeset-needed (label applied, confirmed via read-back); deviations=[amended the first commit to drop a 'Fixes #12161' trailer per the standing prompt's squash-safety rule -- card relation declared once, in the PR body only; lychee link-check not runnable locally, see tests field].",
"options": [
"A: Standing schema is correct as configured -- keep parsing it for os-dev terminal reports; no action needed.",
"B: The #12150 program coordinator expects the dispatch-prompt's schema specifically -- if so the append_system_prompt for this program should be updated so future cards in this epic report consistently."
],
"recommendation": "A, because the standing prompt is explicit that it governs on conflict and that dispatch prompts carry only per-card deltas -- flagged since it's unclear from inside this session whether the #12150 coordinator's parser was actually written against the other shape."
}
],
"out_of_scope_findings": []
}
Activity
os-support-ai commentedon Aug 25, 2026
Claiming — dispatched under the #12150 program (standing autonomy ruling, maintainer, 2026-08-25, verbatim: 「继续自主完成所有开发」).
session_01KWRU3s15AJz7PGW7a7wdCh(PM session; implementation delegated to an os-dev agent under this session)claude/issue-12161-promise-pagesb362c1b— the L5 Setup surface exists, so the §8.4 timing contract ("only after the L5 surface exists") is met.Generated by Claude Code
os-support-ai commentedon Aug 25, 2026
<!-- os-dev-report -->
{ "issue": 12161, "status": "done", "branch": "claude/issue-12161-promise-pages", "pr": "https://github.com/objectstack-ai/objectstack/pull/12368", "premise_still_valid": true, "summary": "Rewrote the two ADR-0126 §1.3 over-promise passages to per-regime truth: content/docs/capabilities/integrations.mdx:17 (Marketplace templates bullet) and content/docs/build-without-code.mdx:37 (Setup section's Marketplace clause). Both no longer say a blanket 'customize in Studio' -- they now state views/dashboards are editable directly, a packaged flow is locked but can be switched off and cloned via Setup's packaged-automation page (edited in Studio after), and a packaged object grows only through an extension package's own fields. Verified the §8.4 timing precondition myself against objectui#6382 (merged b362c1b, closes #6301) before writing. Draft PR #12368 opened against main, head e7f41817. This is a docs-only change with no released package touched, so per AGENTS.md item 3 and the repo's real skip-changeset label mechanism (confirmed via scripts/check-empty-changeset.mjs), I applied the label myself: read current labels (['size/xs']), wrote the union (['size/xs','skip-changeset']), and read back to confirm it held -- no changeset file added.", "tests": "Derived the exact local gate set for this diff with node scripts/pm/dispatch-gates.mjs (23 matched families vs merge-base 017130a09 of origin/main). Built the dependency closures the gates needed first (spec, formula, lint, client-react, client -- none were pre-built in the fresh worktree). All 23 ran green via scripts/pm/os-verify-lock.sh at final head e7f41817: check:doc-authoring, check:doc-anchors, check:cross-package-test-inputs (+ its node-script twin check-cross-package-test-inputs.mjs), check:doc-formula-expressions, check:doc-security-posture, spec check:docs (229 generated files in sync), check:docs-audit-scope, check:docs-redirects, check:docs-single-h1, spec check:empty-state, spec check:liveness, check:published-readme-links, check:react-page-adapter-contract, check:role-word (no new occurrences), spec check:skill-examples (256 prose examples type-check across 3 surfaces), spec check:strictness-ledger, spec check:variant-docs, check-ci-filter-parity.mjs, check-doc-frontmatter.mjs, check-doc-route-spelling.mjs, check-docs-section-name.mjs, check-section-landing-index.mjs. Re-ran dispatch-gates.mjs after the final commit to confirm the matched file set was unchanged (still exactly the same 2 files). NOT run: the CI lychee link-check workflow itself (offline binary not installed in this environment, and it is an advisory CI-only lane per .github/workflows/check-links.yml, not a local pnpm script) -- substituted a manual check instead: confirmed /docs/build-without-code (the one link added) resolves, since content/docs/build-without-code.mdx exists and is listed in content/docs/meta.json's pages array; check:doc-anchors (which does run locally) confirms 278 #fragment links resolve project-wide, though the new link carries no fragment so that gate does not directly cover it.", "open_questions": [ { "question": "This session's standing system-prompt declares a different terminal-report JSON schema than the one the dispatch prompt specified (issue/pr-number/pr_url/branch/head_sha/files_changed/gates-map/changeset/deviations/notes), and states that on a conflict the standing prompt wins, flagged in the report rather than silently resolved. The standing schema was used for the terminal message. Restating the dispatch-prompt's requested fields here so nothing is lost: files_changed=[content/docs/capabilities/integrations.mdx, content/docs/build-without-code.mdx]; head_sha=e7f41817bc98f51a3847d706b316eabc3637ff02; gates={all 23 matched families: pass}; changeset=skip-changeset-needed (label applied, confirmed via read-back); deviations=[amended the first commit to drop a 'Fixes #12161' trailer per the standing prompt's squash-safety rule -- card relation declared once, in the PR body only; lychee link-check not runnable locally, see tests field].", "options": [ "A: Standing schema is correct as configured -- keep parsing it for os-dev terminal reports; no action needed.", "B: The #12150 program coordinator expects the dispatch-prompt's schema specifically -- if so the append_system_prompt for this program should be updated so future cards in this epic report consistently." ], "recommendation": "A, because the standing prompt is explicit that it governs on conflict and that dispatch prompts carry only per-card deltas -- flagged since it's unclear from inside this session whether the #12150 coordinator's parser was actually written against the other shape." } ], "out_of_scope_findings": [] }Generated by Claude Code
os-support-ai commentedon Aug 25, 2026
os-dev-report
(previous comment's marker survived only as escaped text, not the recognized token — this comment is the fallback spelling per the sanitizer note; same report as above, reposted verbatim below.)
{ "issue": 12161, "status": "done", "branch": "claude/issue-12161-promise-pages", "pr": "https://github.com/objectstack-ai/objectstack/pull/12368", "premise_still_valid": true, "summary": "Rewrote the two ADR-0126 §1.3 over-promise passages to per-regime truth: content/docs/capabilities/integrations.mdx:17 (Marketplace templates bullet) and content/docs/build-without-code.mdx:37 (Setup section's Marketplace clause). Both no longer say a blanket 'customize in Studio' -- they now state views/dashboards are editable directly, a packaged flow is locked but can be switched off and cloned via Setup's packaged-automation page (edited in Studio after), and a packaged object grows only through an extension package's own fields. Verified the §8.4 timing precondition myself against objectui#6382 (merged b362c1b, closes #6301) before writing. Draft PR #12368 opened against main, head e7f41817. This is a docs-only change with no released package touched, so per AGENTS.md item 3 and the repo's real skip-changeset label mechanism (confirmed via scripts/check-empty-changeset.mjs), I applied the label myself: read current labels (['size/xs']), wrote the union (['size/xs','skip-changeset']), and read back to confirm it held -- no changeset file added.", "tests": "Derived the exact local gate set for this diff with node scripts/pm/dispatch-gates.mjs (23 matched families vs merge-base 017130a09 of origin/main). Built the dependency closures the gates needed first (spec, formula, lint, client-react, client -- none were pre-built in the fresh worktree). All 23 ran green via scripts/pm/os-verify-lock.sh at final head e7f41817: check:doc-authoring, check:doc-anchors, check:cross-package-test-inputs (+ its node-script twin check-cross-package-test-inputs.mjs), check:doc-formula-expressions, check:doc-security-posture, spec check:docs (229 generated files in sync), check:docs-audit-scope, check:docs-redirects, check:docs-single-h1, spec check:empty-state, spec check:liveness, check:published-readme-links, check:react-page-adapter-contract, check:role-word (no new occurrences), spec check:skill-examples (256 prose examples type-check across 3 surfaces), spec check:strictness-ledger, spec check:variant-docs, check-ci-filter-parity.mjs, check-doc-frontmatter.mjs, check-doc-route-spelling.mjs, check-docs-section-name.mjs, check-section-landing-index.mjs. Re-ran dispatch-gates.mjs after the final commit to confirm the matched file set was unchanged (still exactly the same 2 files). NOT run: the CI lychee link-check workflow itself (offline binary not installed in this environment, and it is an advisory CI-only lane per .github/workflows/check-links.yml, not a local pnpm script) -- substituted a manual check instead: confirmed /docs/build-without-code (the one link added) resolves, since content/docs/build-without-code.mdx exists and is listed in content/docs/meta.json's pages array; check:doc-anchors (which does run locally) confirms 278 #fragment links resolve project-wide, though the new link carries no fragment so that gate does not directly cover it.", "open_questions": [ { "question": "This session's standing system-prompt declares a different terminal-report JSON schema than the one the dispatch prompt specified (issue/pr-number/pr_url/branch/head_sha/files_changed/gates-map/changeset/deviations/notes), and states that on a conflict the standing prompt wins, flagged in the report rather than silently resolved. The standing schema was used for the terminal message. Restating the dispatch-prompt's requested fields here so nothing is lost: files_changed=[content/docs/capabilities/integrations.mdx, content/docs/build-without-code.mdx]; head_sha=e7f41817bc98f51a3847d706b316eabc3637ff02; gates={all 23 matched families: pass}; changeset=skip-changeset-needed (label applied, confirmed via read-back); deviations=[amended the first commit to drop a 'Fixes #12161' trailer per the standing prompt's squash-safety rule -- card relation declared once, in the PR body only; lychee link-check not runnable locally, see tests field].", "options": [ "A: Standing schema is correct as configured -- keep parsing it for os-dev terminal reports; no action needed.", "B: The #12150 program coordinator expects the dispatch-prompt's schema specifically -- if so the append_system_prompt for this program should be updated so future cards in this epic report consistently." ], "recommendation": "A, because the standing prompt is explicit that it governs on conflict and that dispatch prompts carry only per-card deltas -- flagged since it's unclear from inside this session whether the #12150 coordinator's parser was actually written against the other shape." } ], "out_of_scope_findings": [] }Generated by Claude Code