Skip to content

skills(objectstack-platform): the ADR-0146 paragraph lists six types a pair's override is served for; page, app, dataset, doc, book and mapping are served too, and the pair can remove its own override #30229

Closed

Description

@objectstack-fleet

domain:server#5 · os-bill · session_01Utp6CYVV6fcAQrNTDQRvPb

Filing gate ①: a shipped text that says something wrong (skills/** ships to customer agents through npx skills add). The owed follow-up of PR #30226 (#30062 items 1, 2, 4, 5), whose body carries Skills-docs: follow-up for it. No domain:* label is set: triage routes it.

Defect

skills/objectstack-platform/SKILL.md:128 (the "Customizing an installed package (ADR-0146)" paragraph, read at origin/main dfafae81): "The read honours it only from the pair (the row's package_id), today only for a view, dashboard, report, email_template, translation or flow".

Business reason

A customer's AI agent reads this skill to write a .custom package. Told the list is six types, it either refuses to override a page or dataset it could, or tells the customer a customization cannot be undone. ADR-0146 D2 is one rule; the skill should state it once, not as a list that ages.

Acceptance

  1. The paragraph states the rule from the platform's own list (every type the override classification admits as open), or names the full current list, and says that removing the pair's item restores the base's.
  2. The package's evals exercise one non-view override (a page or a dataset) and one removal.
  3. Land after PR fix(metadata-protocol,app-shell): serve a pair's mapping override, let a pair remove any override it holds, name a working remedy for an excluded type (#30062) #30226 merges, so the text matches main.

Reader who acts

domain:skills lane after triage. Tier H (governed surface skills/**): human merge.

Dedup

Searched issues, open and closed: "objectstack-platform SKILL ADR-0146 override types" (12 hits) and "skills override page app dataset doc book" (29 hits). The skills cards among them are #28577 and #28778, both closed, on the D2 promise and the email-template locale rule; none updates the type list or removal.

Re-check

git grep -n "today only for a view, dashboard, report, email_template, translation or flow" origin/main -- skills/objectstack-platform/SKILL.md

Activity

  1. objectstack-fleet commented on Nov 5, 2026

    @objectstack-fleet
    ContributorAuthor

    triage#1 · os-zhuang · session_01AavokzJ5DndAwitDXvKy4U

    Path: none

    Triage: first-touch audit · p3 · domain:skills · pm:queue · 2026-11-05T03:01Z

    ⛔ Not a claim.


    Generated by Claude Code

  2. added
    documentationImprovements or additions to documentation
    domain:skillsDomain lane — seat card indexed by label:pm:seat
    pm:queueReady for the PM dispatch loop
    pm:dispatchedDispatched to a dev agent by /pm-dispatch
    and removed
    pm:queueReady for the PM dispatch loop
    on Nov 5, 2026
  3. objectstack-fleet commented on Nov 5, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:skills#2 · os-lizheng · session_012MmDsR4AZoJZyzKQcBEESh

    Claim: PM loop round 1 · 2026-11-05T10:59Z
    Session: session_012MmDsR4AZoJZyzKQcBEESh
    Account: os-lizheng
    Branch: claude/issue-30229-adr0146-override-types
    Worktree: objectstack-issue-30229
    Domain: domain:skills
    Seat: domain:skills#2
    File surface: skills/objectstack-platform/SKILL.md (the "Customizing an installed package (ADR-0146)" paragraph), the package's evals under skills/objectstack-platform/, .changeset/30229-*.md (stop on breach; explain in the report)
    Container & model: M, mode:subagent, model: claude-fable-5-1 (--tier: MANDATORY, clause ① — skills/** ships verbatim, no one-line exit), effort: high
    Clause-②: no
    Metadata-protocol: none
    Responsibility: the skill text (this lane) lists six override types | SEALED_ROW_SERVED_OVERRIDE_TYPES in packages/metadata-protocol serves more, and a pair-named removal reverts | every customer agent that loads objectstack-platform to write a .custom package; used today
    Thread-read: 6648500859
    Premise: holds — 2026-11-05T10:59Z on origin/main 09720e2c: the card's re-check grep still hits skills/objectstack-platform/SKILL.md:128; PR #30226 (the card's serial predecessor) merged 2026-11-05.
    Serial constraints cleared: PR #30226 merged; no open head:claude/ PR touches skills/objectstack-platform/**; #30092 (same file, odd slot) is unclaimed.

  4. objectstack-fleet commented on Nov 5, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:skills#2 · os-lizheng · session_012MmDsR4AZoJZyzKQcBEESh
    os-dev-report
    Posted: 2026-11-05T11:29Z · PR #30439 (draft, head 75b0062c)

    {
      "issue": 30229,
      "status": "done",
      "branch": "claude/issue-30229-adr0146-override-types",
      "pr": "https://github.com/objectstack-ai/objectstack/pull/30439",
      "session": "session_012MmDsR4AZoJZyzKQcBEESh",
      "premise_still_valid": true,
      "summary": "Premise re-checked on origin/main fdd06415 (main had moved past the pinned 09720e2c): the card's grep still hit SKILL.md:128, PR #30226 is on main, SEALED_ROW_SERVED_OVERRIDE_TYPES = page, app, dataset, doc, book, mapping, and isPairRowRemoval admits a pair-named removal for every open override type. The paragraph now names the twelve types the reads serve (view, dashboard, report, email_template, translation, flow, page, app, dataset, doc, book, mapping) and says removing the pair's item (DELETE …?package=hotcrm.custom) serves the base's again; two same-paragraph restatements were deleted to pay the token ratchet (6000 -> 6009, ceiling 6011). The list was chosen over a rule because the code's rule is 'open override type' = overridable AND D9 conditions delivered, and the spec's exported OVERRIDABLE_METADATA_TYPES still names action, which the door refuses as not yet available. Evals: id 13 (dataset-and-page override), id 14 (removal). Changeset '@objectstack/skills': patch. Draft PR opened via the relay; Tier H, human merge.",
      "tests": "At 75b0062c: node scripts/check-skills-token-ratchet.mjs -> 'skills/objectstack-platform/SKILL.md is 6009 tokens (ceiling 6011; headroom 2)' exit 0; pnpm --filter @objectstack/spec run check:skill-docs exit 0; check:skill-refs exit 0; pnpm check:doc-authoring exit 0; pnpm check:skill-top-level-keys exit 0. ① for the one shipping package: os-verify-lock 'VERDICT command-exit 0 · held the lock 93s' over turbo build --filter=@objectstack/formula --filter=@objectstack/lint --filter=@objectstack/skills (Tasks: 5 successful, 5 total); then node packages/skills/scripts/sync-catalog.mjs --check -> '97 file(s) under dist/skills are byte-identical to skills/**' exit 0, and dist carries the new sentence and eval 14, zero hits for 'today only for a view'. ② @objectstack/skills declares no test/typecheck script (empty). Evals JSON parses (14 cases). No ablation: no tested runtime behaviour changed.",
      "gates": "Local subset, exit codes captured before any pipe, from dispatch-gates --commands on the real diff (45 families): 41 exit 0; 4 exit 3 PREREQUISITE NOT MET -> NOT MEASURED locally: check:dts-closure, check:dual-build-cjs-loads, check:sourcemap-no-sources-content (full workspace build), check:lean-entry-closure (needs @objectstack/objectql built) — declared narrowing, CI owns them. check:doc-formula-expressions exit 3 on first run, exit 0 after the targeted formula+lint build. --ran reconciliation: '45 derived famil(ies) accounted for — 41 run, 4 NOT-MEASURED (4 DERIVED from a recorded exit 3)'. Local-only families: check:skill-frame-freshness exit 0; check:dev-prereqs exit 1 ('the workspace is not built — 103 of 107 packages', the fresh worktree, not the diff). --tier: MANDATORY tier derived from skills/** (clause ①, no one-line exit), honoured. PR check-runs at 75b0062c when read, not waited for: success — Governed Surface Queue Guard, Check PR Size, PR-body guards (claim · duplicate · Part-of · single-writer path), Lint · scoped · tooling self-tests, Auto Label, filter, Test UI (aggregate), Dogfood Regression Gate (aggregate); skipped — Type Check UI, Lint UI, Test UI shards, Build & E2E UI, UI Published Artifacts, Build UI Deps, Build Docs, Temporal Conformance, Dogfood shards, Dogfood Verify CLI, 18.x upgrade harness, Packed-tarball smoke, Schedule gate; in_progress — Lint · repo & tooling gates, Lint · CI release & engine gates, Lint · docs & code guards, Lint · ESLint, Lint · PM dispatch-gates, Lint · scoped · query-options erasure, Lint · scoped · slot lookup & corpus, Type Check · workspace, Type Check · source gates, Type Check · consumer gates, Type Check · debt ledger, Check Changeset; queued — Build Core, Plan Test Core shards, Live E2E UI.",
      "dogfood_battery": "n/a — no `!` in the PR title and no (narrowing) arm",
      "mcp_calls": "0 — no MCP GitHub tool used (reads: gh api single-card and single-PR GETs; writes: relay only)",
      "api_writes": "2 — both repository_dispatch strokes through scripts/pm/fleet-write/dispatch.mjs: POST /repos/objectstack-ai/objectstack/dispatches (pr_create -> relay run 42019106946, PR #30439, 11351 bytes sent = stored) and POST /repos/objectstack-ai/objectstack/dispatches (this os-dev-report comment via post-stamped.mjs). Plus 2 git pushes (probe branch, then 75b0062c), not REST.",
      "line_budget": "skills/objectstack-platform/SKILL.md 426 -> 426 lines (net 0; the paragraph is one line); tokens 6000 -> 6009 of ceiling 6011 (+9, inside the ratchet, paid by deleting two restatements in the same paragraph, no re-wrap); whole package 11 SKILL.md files 4534 -> 4534 lines; bundle total 225708 -> 226246 (+9 SKILL.md, +529 eval fixture, not ratcheted). The eval additions are the two cases acceptance 2 names.",
      "files_changed": ["skills/objectstack-platform/SKILL.md", "skills/objectstack-platform/evals/config-plugins-ops.json", ".changeset/30229-adr0146-override-types.md"],
      "deviations": ["Four derived built-output gates NOT MEASURED locally (exit 3, full workspace build) — declared, CI runs them.", "check:dev-prereqs exit 1 on the unbuilt fresh worktree; reading kept local as the rules say.", "Commit trailers are the model-free pair (Co-authored-by: Claude / Claude-Session), per AGENTS.md, not the harness reminder's model-named form.", "PR labels: none sent — the dispatch named none and skip-changeset does not apply (the diff ships through @objectstack/skills). size/s was added by another actor (labeler), left as is."],
      "open_questions": [],
      "security_findings": "none",
      "out_of_scope_findings": ["observation (not a class a/b/c; zero pull) · ui/scripts/check-skill-eval-tokens.mjs scans ui/skills only, so root skills/*/evals must_contain tokens have no 'is it taught' oracle; the two new cases were hand-checked against SKILL.md · dedupe: skill-eval-tokens root skills evals oracle · carrier: none", "observation (boundary, not a trap) · @objectstack/spec OVERRIDABLE_METADATA_TYPES names action while the write door refuses an action override with declared_type_not_yet_available (ADR-0146 D9, by design); the skill follows the door · carrier: none"]
    }
  5. objectstack-fleet commented on Nov 5, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:skills#2 · os-lizheng · session_012MmDsR4AZoJZyzKQcBEESh

    ACCEPT → PR #30439 comment 6657528165 · head e3c97f55 · 2026-11-05T12:06Z

    Contract review: PASS 6657115315 on 75b0062c, then a delta PASS 6657246575 on e3c97f55 after the patch round took its one should-fix. CI is green (30 success, 15 skipped). The PR is Tier H, so the approvers os-zhuang and hotlong were requested in this round, and the PR carries needs-user-decision while it waits.

  6. objectstack-fleet commented on Nov 5, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:skills#2 · os-lizheng · session_012MmDsR4AZoJZyzKQcBEESh

    Landed · PR #30439 merged 2026-11-05T12:30:38Z through the merge queue (enqueued by os-zhuang), merge commit 0e42aef259. #30229 was closed completed by the PR's Fixes.

    State change: pm:dispatched removed from #30229, and needs-user-decision removed from PR #30439, both in this stroke. Nothing is left on this card.

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

Metadata

Metadata

Assignees

Labels

documentationImprovements or additions to documentationdomain:skillsDomain lane — seat card indexed by label:pm:seatpriority:p3

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions