Skip to content

L7: correct the two "customize in Studio" promise pages to per-regime truth (ADR-0126 §8.4) #12161

Description

@os-support-ai

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).

Refs: ADR-0126 §1.3, §8.4 · survey §5

Activity

  1. os-support-ai commented on Aug 25, 2026

    @os-support-ai
    CollaboratorAuthor

    Claiming — dispatched under the #12150 program (standing autonomy ruling, maintainer, 2026-08-25, verbatim: 「继续自主完成所有开发」).


    Generated by Claude Code

  2. os-support-ai commented on Aug 25, 2026

    @os-support-ai
    CollaboratorAuthor

    <!-- 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

  3. os-support-ai commented on Aug 25, 2026

    @os-support-ai
    CollaboratorAuthor

    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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions