Uh oh!
There was an error while loading. Please reload this page.
docs(skills): land the app-repo working principles in the published catalog - #14052
Merged
os-zhuang merged 2 commits intoSep 1, 2026
Merged
Conversation
…atalog Encode the maintainer's 2026-08-31 metadata-app principles on the surface the ruling names — the published `skills/` catalog — plus the PM decision-analysis recommendation-order clause they imply. - platform: a new "App / Platform Boundary" section — what an app IS, where a capability gap gets fixed, and what a platform defect obliges (wait for the fix; no workaround, no half-landing; verify the pin and re-run the repro before resuming). - ui: the section escape-hatch ladder (derive -> group reference -> hand enumeration, last) in Record Presentation, and the docs rule that a doc explains business concepts rather than hand-copying a machine inventory. The file's two worked `sections` examples now reference a declared group instead of enumerating members, so the page stops teaching the rung it demotes. - data: the invariant-vs-transition-gate choice beside `requiredWhen`, and blocking-rests-on-a-human-judgement beside the severity levels. - automation: keep a screen flow at `runAs: 'user'` and move an elevated write into a `subflow`; pin an organization predicate on a `runAs: 'system'` sweep. - pm-dispatch decision-analysis: the app-repo exception to the recommendation order, funded entirely by reflow within the file's 46-line ceiling. Token ceilings rise by 900 across five rows under the ruling quoted verbatim in the CEILINGS block; the SKILL.md subtotal pin shifts by the same amount so the id-strip's lowering claim keeps its original slack. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Msg17tAHJ3jVTYFgHydCm2
…laration The authority block added by the previous commit sat between the `SHRINK-ONLY` doc comment and `export const CEILINGS`, pushing that testimony outside the 400-char anchor window check-ratchet-remedy-authority.mjs searches around every `CEILINGS` mention. The sweep then classified this gate `excluded` instead of `marked` — a MISCLASSIFIED failure, the farm reporting that a gate had silently left the maintainer-only convention. Measured green on origin/main and red on the branch, so the regression was this PR's. Move the block above the doc comment, restoring adjacency, and record the constraint where the next author will hit it. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Msg17tAHJ3jVTYFgHydCm2
os-zhuang
approved these changes
Sep 1, 2026
os-zhuang
marked this pull request as ready for review
September 1, 2026 06:33
os-zhuang
enabled auto-merge
September 1, 2026 06:33
Uh oh!
There was an error while loading. Please reload this page.
os-zhuang
deleted the
claude/issue-13848-app-principles-objectstack-half
branch
September 1, 2026 06:54
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for freeto join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fixes#13848
Lands the objectstack half of the 2026-08-31 app-repo principles. The hotcrm half already landed (hotcrm PR 1438); this PR discharges the card's whole remaining range — the published-skills universal items and the pm-dispatch decision-analysis clause — so the card closes with it.
⛔ Human merge required — this PR raises five shrink-only token ceilings
Governed surface, draft only. The raise is
⛔ MAINTAINER-ONLYterritory and is taken here because the ruling that authorizes it names this landing surface by name. Verbatim and untranslated, recorded on the card:and, for the escape-hatch ladder (same day):
The reviewer's call is whether 900 ceiling tokens is the right price for these principles. Everything else here is mechanical.
Landing map — where each item went, and why
The card's spec rows are domain-scoped, and published skills are loaded per domain, so each rule sits where the reader is at the moment the mistake is available — not collected into one section a data-schema author never loads.
os; capability gaps go upstreamskills/objectstack-platform/SKILL.mdskills/objectstack-ui/SKILL.mdvalidations[]vsrequiredWhen/ boundsskills/objectstack-data/SKILL.mdrequiredWhenskills/objectstack-data/rules/validation.mdrunAs: 'user'; elevated writes move into asubflowskills/objectstack-automation/SKILL.mdreadonlyblockquoterunAs: 'system'sweep pins an organization predicate; tenant column is platform-injectedskills/objectstack-ui/SKILL.md.claude/skills/pm-dispatch/references/decision-analysis.mdRow 9 corrects a real drift rather than only adding: the existing
readonlyblockquote says a flow maintaining areadonlyfield must runrunAs: 'system'. True of the scheduled flow it was written for; read by an agent writing a screen flow it says "elevate the whole screen flow", which elevates every other write in it.Principle 5 also required fixing the page that taught the rung it demotes: this file's two worked
sectionsexamples enumerated their members. Both now reference a declared group, which is what the ruling asks for and is also shorter.Budgets — before / after
Token ratchet (
node scripts/check-skills-token-ratchet.mjs), unitceil(utf8 bytes / 4):skills/objectstack-platform/SKILL.mdskills/objectstack-ui/SKILL.mdskills/objectstack-data/SKILL.mdskills/objectstack-data/rules/validation.mdskills/objectstack-automation/SKILL.mdGrowth exceeds the raise by 27 because three rows carried that much existing headroom, which is spent first. Whole shipped bundle: 186567 to 187494 tokens (+0.50 percent).
Paid down before raising: the only genuine deletion available was the two
sectionsexamples in the ui row, worth 13 tokens, and it is the fix the ruling asks for rather than a payment invented to fund the raise. Nothing else in these five files had text the new rules make redundant, so further funding would have meant deleting a live fact with no other home — the stop condition, not a budget.The SKILL.md subtotal self-test pin shifts 118095 to 118910, exactly the 815 raised on the four SKILL.md rows (the fifth row is not a SKILL.md and correctly does not move it), so the id-strip's lowering claim keeps its original 80 tokens of slack. Same operation the 2026-08-27 pm-dispatch raise performed.
Line ratchet (
node scripts/pm/check-skill-line-ratchet.mjs):decision-analysis.mdstays 46 / 46 lines, no raise. The new clause is funded entirely by reflowing two paragraphs with the gate's ownwrapLine, which frees exactly two lines. Widest-table-row pin unchanged at 0.A regression this PR caused and fixed
The first commit put the authority block between the
SHRINK-ONLYdoc comment andexport const CEILINGS, which pushed that testimony outside the 400-byte anchor windowcheck-ratchet-remedy-authority.mjssearches around everyCEILINGSmention. The farm-wide detector then classified the gateexcludedinstead ofmarked— MISCLASSIFIED, i.e. it reported that a gate had silently left the maintainer-only convention. Measured green onorigin/mainand red on the branch, so the regression was this PR's, not pre-existing. Second commit moves the block above the doc comment and records the constraint in place.Worth noting for review: that gate is not in the family
scripts/pm/dispatch-gates.mjsderives for these paths. It was run because a ratchet edit is exactly what it polices.Verification
Gate union run after the final commit, at
fa2a2ef70. Exit codes captured before any pipe (cmd > log 2>&1; EXIT=$?); each verdict read from the gate's own printed line.36 gates run: the 32 the dispatch-gates family derives for this changeset (asserted with
--repo objectstack-ai/objectstack), pluscheck:nul-bytes,check-skill-line-ratchet, the token ratchet's--self-test(64 cases), andcheck-ratchet-remedy-authority.check:doc-authoring,check:corpus-claim-drift,check:skill-frame-sync,check:skill-compatibility,check:skill-identifier-liveness,check:role-word,check:pm-skill-id-lint,check:pm-skill-ratchet,check:pm-governed-merges,check:nul-bytes, both ratchets and both self-tests.check:doc-formula-expressionsneeded@objectstack/formulaand@objectstack/lintbuilt first; after building both it is green (22 record-scoped examples, 9 spec TSDoc examples, 14 field-level predicates, all clean).check-test-completenessis NOT MEASURED locally, by construction: it parses a test-run log, the derived family names it with no argument, and the gate itself prints that this branch is unreachable in CI and is not a red. CI is authoritative for it.Changeset
None, per the three immediate precedents for skills-only PRs on this surface (PRs 14001, 13972, 13891 — none carried one).
skip-changesetlabel applied at PR open.Out of scope
No hotcrm files, no
content/docs/releases/, no pm-dispatch SKILL.md main-file growth. The nav-item-type rows of card 13890 are a different card queued behind this one on the ui SKILL.md face and are not touched here.Generated by Claude Code
Generated by Claude Code