Skip to content

docs(protocol): point the customer-facing "the window-closing condition is tracked separately" sentence at the now-WRITTEN end condition (GA) #14245

Description

@baozhoutao

Filed by the domain:devx execution seat (session session_01WLJQhde67SeTccsmnBVarV) at #14043's landing window, per the obligation recorded on that card's claim. ⛔ Unassigned — pm:* grading is triage's.

The gap, one sentence

content/docs/protocol/backward-compatibility.mdx:207 (position dated to origin/main b360cc7d — re-derive) reads: "the condition that closes the window is tracked separately and is deliberately not stated here." That deferral was correct when written (PR #14211, whose dispatch fence forbade inventing the end condition). The end condition is now WRITTEN and maintainer-ruled: PR #14227 recorded it in scripts/check-changeset-no-major.mjs's header — at GA (the fixed group's first general-availability major), the group returns to strict semver.

What to do

Replace the "deliberately not stated here" deferral with the ruled one-liner (window closes at GA; strict semver resumes), consistent with the gate-header text — ⛔ no dates, no version numbers, nothing the ruling does not contain. The customer reading this page is exactly the audience triage identified when it linked this half to #14043: they judge "when can I go back to reading MAJOR as the risk signal" from this sentence.

Read-only measurements already taken by #14043's dev (2026-09-01): the page's two other references to the gate (:115, :195) are accurate and need no change.

Scope notes for triage

Dedup

#13893 (closed — rewrote both pages but deliberately deferred this sentence) · #14043 (closed — the internal half) · #14210 (open — phantom labels + 2-MINOR dwell on the same page, different defect). No open card covers this sentence.

Activity

  1. huangyiirene commented on Sep 2, 2026

    @huangyiirene
    Collaborator

    Triage (R+89, triage seat, session session_019kDRpB7D2XzVzkaLp57T5D): pm:queue · priority:p3 · domain:devx · documentation · type Task.

    Lands in: content/docs/protocol/backward-compatibility.mdx (the "tracked separately and deliberately not stated here" sentence, ~:207, re-derive). Replace with the ruled one-liner exactly as the gate header in scripts/check-changeset-no-major.mjs records it — the window closes at GA, strict semver resumes — ⛔ no dates, no version numbers, nothing the ruling does not contain. Provenance chain stays as the card states (director batch B 2026-09-01 「同意」 → #14043 / PR #14227 → this). Not releases/**, so no docs-only fence. p3: the two other references on the page are already accurate; this is the customer-facing half of a landed ruling.

    Size/model suggestion: S mechanical, sonnet.


    Generated by Claude Code

  2. added theissue type on Sep 2, 2026
  3. claude commented on Sep 2, 2026

    @claude
    Contributor

    Claim: session_01WLJQhde67SeTccsmnBVarV (devx execution seat, W6)

    Route: triage ruling (comment 5503069318) verbatim in the dispatch order. One PR, Fixes #14210 + Fixes #14245, each card's criterion checked separately.


    Generated by Claude Code

  4. claude commented on Sep 2, 2026

    @claude
    Contributor

    os-dev-report

    {
      "issue": 14245,
      "status": "done",
      "branch": "claude/issue-14210-backward-compat-page-promises",
      "pr": "https://github.com/objectstack-ai/objectstack/pull/14385",
      "premise_still_valid": true,
      "summary": "Both #14210 and #14245 land in content/docs/protocol/backward-compatibility.mdx, one PR per the triage note. #14210: Breaking Change Process step 1 now points at the live protocol:breaking label (confirmed via REST label list); step 2's compatibility label instruction is dropped entirely; the unsourced 2-MINOR-release deprecation-survival guarantee is deleted from all three places it appeared (Phase 2 heading, mermaid diagram, callout) and replaced with the true statement (retired at the ADR-0087 registry boundary, no minimum window). #14245: the GA end-condition sentence is re-derived from scripts/check-changeset-no-major.mjs's own header wording (window closes at GA, strict SemVer resumes), with no dates or version numbers added.",
      "tests": "All four PM-assumption premise positions confirmed present on origin/main before editing. Labels: GET /repos/objectstack-ai/objectstack/labels confirmed protocol:breaking exists, breaking-change and compatibility do not. node scripts/pm/dispatch-gates.mjs derived 29 local gate families for content/docs/protocol/backward-compatibility.mdx. Built dependency closure first (@objectstack/spec gen:schema + build, @objectstack/formula, @objectstack/lint, @objectstack/client, @objectstack/client-react) since several derived gates read compiled dist/.d.ts output. Ran all 29 under scripts/pm/os-verify-lock.sh: 28 PASS, 1 legitimately NOT-MEASURED (node scripts/check-test-completeness.mjs grades a saved `turbo run test` CI log and refuses standalone with its own PREREQUISITE NOT MET). Reconciled with `dispatch-gates.mjs --ran`: 'Run reconciliation \u2014 29 derived, 28 run, 1 NOT-MEASURED, 0 UNRUN' / '\u2713 dispatch-gates --ran: 29 derived famil(ies) accounted for \u2014 28 run, 1 NOT-MEASURED.' Key gate output excerpts: check:docs -> '229 generated files in sync with packages/spec'; check:skill-examples -> '259 prose examples type-check across 3 surface(s)'; check:doc-formula-expressions self-test '58 cases passed' plus clean corpus scan; check:doc-security-posture -> '26 ObjectSchema.create example(s) ... carry an os validate-clean security posture'; check:docs-single-h1, check:doc-anchors, check:role-word, check:published-readme-links, check:vendor-version-stamps, check:react-page-adapter-contract, check:corpus-claim-drift, check:cross-package-test-inputs, check:docs-audit-scope, check:skill-identifier-liveness, check:doc-authoring, check:docs-redirects and the 7 node-direct gates all exited 0. node scripts/check-nul-bytes.mjs -> 'OK ... no raw ASCII control bytes' (repo-wide). Reverse-checked the diff is minimal via `git diff` and `git status --short` (only the target file touched, no stray build artifacts staged). Docs-only diff: skip-changeset label applied on the draft PR via the additive REST endpoint and confirmed present on comparative read-back (precedent: PR #14211, same page/author, docs-only, carries skip-changeset).",
      "mcp_calls": 0,
      "open_questions": [],
      "out_of_scope_findings": []
    }

    Generated by Claude Code

  5. claude commented on Sep 2, 2026

    @claude
    Contributor

    ACCEPT — #14245 landed (together with #14210, one PR / two acceptance criteria). PR #14385 (head 5ee7d7d9) merged to main as 4485f7da via the merge queue, 35/35 checks green.

    Close-out probe on origin/main (fresh fetch, throwaway worktree): content/docs/protocol/backward-compatibility.mdx:206 now states the launch-window end condition explicitly — "the window closes at GA, and strict SemVer resumes from that point. Until it closes, this section is the operative rule wherever any part of this page disagrees." Verified alongside #14210's probes (:83 no-survival-window rule, :111 protocol:breaking, ADR-0049 links at :72/:83).

    pm:dispatched stripped in this same step.

    Seat: session_01WLJQhde67SeTccsmnBVarV (domain:devx, #6023).


    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