Skip to content

docs(guides): add scenario cookbook (Solutions) + create-vs-edit-form example#2500

Merged
os-zhuang merged 1 commit into
mainfrom
claude/airtable-permissions-access-phpind
Jul 1, 2026
Merged

docs(guides): add scenario cookbook (Solutions) + create-vs-edit-form example#2500
os-zhuang merged 1 commit into
mainfrom
claude/airtable-permissions-access-phpind

Conversation

@os-zhuang

Copy link
Copy Markdown
Contributor

What & why

The mechanisms in this platform are all documented (schema references + per-feature metadata guides), but the connective tissue is missing: given a concrete business problem, which mechanisms to combine and why. This surfaced in a design conversation where every answer ("create form ≠ edit form", "where does field grouping live", "who sees automations") lived only in ADRs or in code — not discoverable as a how-to.

This PR adds a goal-oriented Solutions (Scenario Cookbook) docs section and seeds it with the first end-to-end recipe plus a runnable example. The recipes double as the few-shot corpus for AI authoring (ADR-0047 §3.5: "zero examples is why zero AI generations use these features").

Docs — content/docs/guides/solutions/

Each recipe follows a fixed shape: Scenario → Recommended solution → Why (→ ADR) → Runnable example → Anti-patterns.

  • create-vs-edit-form — derive both forms from one intent-tagged field set (required/readonly/defaultValue/group + declaration order); hand-shape formViews.create only on real layout/flow divergence (ADR-0047).
  • field-grouping-and-order — three different meanings of "group": field.group (semantic, on the object) vs form sections (layout) vs grid grouping (row aggregation).
  • role-based-interfaces — consumer App/page (interface mode) vs builder Studio surfaces; nav gating that hides rather than disables (ADR-0047/0066).
  • data-automation-interface-access — map an access requirement onto object CRUD / FLS / RLS / capabilities / app gating / flow runAs (ADR-0066/0057/0049).
  • public-data-collection — anonymous form with declaration-derived authorization + field whitelist (ADR-0056).
  • approval-workflow — the manage_metadata configure-capability + runAs run-identity decision (ADR-0049/0066).

Wired into guides/meta.json (new Solutions section) and guides/index.mdx (cards). All internal links resolve against the existing reference/guide tree.

Example — examples/app-showcase

Backs recipe 1:

  • objects/contact.object.tsshowcase_contact: flat, grouped (field.group), intent-tagged field set (required / readonly-derived / defaulted).
  • views/contact.view.ts — full grouped edit form (mirrors the auto-derived default) + a sparse formViews.create override, bound through addRecord.formView.
  • Registered in the objects/views index files.

Verification

  • @objectstack/spec builds; examples/app-showcase typecheck passes for the two new contact.* files (remaining typecheck errors are unbuilt sibling workspace packages, pre-existing/environmental).
  • meta.json files validated as JSON; new docs use existing frontmatter/Cards/Callout conventions.

🤖 Generated with Claude Code


Generated by Claude Code

… example

Adds a goal-oriented "Solutions" docs section that answers "how do I solve
business problem X" across objects/fields/forms/views/permissions/automation —
the connective tissue missing between the per-feature guides and the schema
references. Each recipe links to a runnable example and its decision record,
and doubles as the few-shot corpus for AI authoring (ADR-0047 §3.5).

Recipes:
- create-vs-edit-form: derive both forms from one intent-tagged field set;
  hand-shape create only on real layout/flow divergence
- field-grouping-and-order: field.group (semantic) vs form sections (layout)
  vs grid grouping (row aggregation)
- role-based-interfaces: consumer App/page vs builder Studio surfaces
- data-automation-interface-access: CRUD/FLS/RLS/capabilities/runAs mapping
- public-data-collection: anonymous form with declaration-derived authz
- approval-workflow: configure capability + runAs run-identity

Showcase example backing recipe 1:
- showcase_contact object: flat, grouped, intent-tagged field set
- contact views: full grouped edit form + sparse formViews.create override
  bound via addRecord.formView

Wires solutions into guides meta.json + index.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01NvGeDWAo3rrjc3CQ8vmAac
@vercel

vercel Bot commented Jun 30, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
spec Ready Ready Preview, Comment Jun 30, 2026 10:40pm

Request Review

@github-actions github-actions Bot added documentation Improvements or additions to documentation size/l labels Jun 30, 2026
@os-zhuang os-zhuang added the skip-changeset PR has no user-facing published change; bypasses the changeset gate label Jun 30, 2026 — with Claude
@os-zhuang
os-zhuang marked this pull request as ready for review July 1, 2026 04:54
@os-zhuang
os-zhuang merged commit d4ab084 into main Jul 1, 2026
18 checks passed
@os-zhuang
os-zhuang deleted the claude/airtable-permissions-access-phpind branch July 1, 2026 04:55
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentation Improvements or additions to documentation size/l skip-changeset PR has no user-facing published change; bypasses the changeset gate

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants