Uh oh!
There was an error while loading. Please reload this page.
docs(skills): give datasets/ a home in the published project-layout tree - #14001
Merged
Conversation
The objectstack-platform layout tree — the one place the published catalog tells an agent what directories an ObjectStack project has — enumerated dashboards/ and reports/ but not datasets/. An agent reading only the tree learned that the two analytics surfaces have homes and that the layer they bind does not appear to have one at all, which is the #13696 failure shape: a module's app face complete, its analytics face silently empty. Paid from measured in-file headroom, not a ceiling move: 67 bytes added against 74 available (12687 -> 12704 tokens, ceiling 12705). 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 00:01
os-zhuang
enabled auto-merge
September 1, 2026 00:01
Uh oh!
There was an error while loading. Please reload this page.
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#13974
What changed
One row in the published project-layout tree in
skills/objectstack-platform/SKILL.md:Nothing else in the file changed, and no ratchet ceiling moved — see the arithmetic below.
Why
That tree is the one place the published catalog tells an agent what directories an
ObjectStack project has. It enumerated
dashboards/andreports/and notdatasets/,so an agent reading only the layout learned that the two analytics surfaces have homes
and that the layer they bind does not appear to have one at all. The file already teaches
datasetsas a top-leveldefineStack()collection key in its Full ConfigurationReference; the layout tree was the surface that disagreed with it.
That is the failure shape recorded on #13696 — a module's app face complete, its
analytics face silently empty, with nothing anywhere reporting a problem. The
assembly-checklist reading path is covered by the separate draft PR #13972; this is the
layout reading path, which that PR does not touch.
Budget: paid from measured in-file headroom, not a ceiling move
The card priced the row at roughly 85 bytes against roughly 72 of headroom and expected
either an in-file deletion or a ceiling move. Written in the tree's own comment register —
the same
# Optional: nounshape as every sibling row — the row costs less than that, andit fits. Measured, in
check-skills-token-ratchet's own convention ofceil(utf8 bytes / 4):Ceiling 12705 tokens is 50820 bytes. 67 added against 74 available, so the row lands
inside the existing ceiling with 7 bytes to spare.
Where that headroom came from, and why it is genuine budget rather than a reservation.
Two facts, both reproducible from this repo's history:
12705row was pinned at the measurement. Atb9186f6b, the commit thatlanded it, the file measured 50817 bytes = 12704.25, i.e. exactly 12705 tokens — zero
headroom.
c42bc8ee(docs(skills): objectstack-platform factual sweep — 6 false behavioral claims corrected #13760, theobjectstack-platform factual sweep), which corrected six false behavioral claims and in
doing so shrank the file 50817 → 50746 bytes, 71 bytes / 18 tokens, without lowering the
ceiling.
So the "new text is paid for by deleting text in the same file" discipline in the ratchet
header is satisfied by a real, measured deletion in this exact file — banked by #13760 a
few days earlier rather than in this PR. No re-wrap is involved anywhere: the row is
purely additive and every other byte of the file is untouched.
The
CEILING_BASIS.from10402reservation does not apply. That header warns thatheadroom on
objectstack-dataandobjectstack-platformis not budget because it wasPR #10402's text priced ahead of its merge. The header itself then records that
reservation as spent at the
strippedInternalIdsre-measure, and fact 1 above is the samething observed on this row: re-pinned at measurement, zero headroom. The 18 tokens present
today accrued strictly after that, from #13760's deletions.
Because no ceiling moved,
scripts/check-skills-token-ratchet.mjsis not in thisdiff, and no maintainer ruling is being invoked as authorization for a raise. The
objectstack-uiCEILINGS row that draft PR #13972 moves is untouched here; that PR hasnot landed on
main, so there is no textual adjacency in the ratchet script toreconcile.
mainwas merged into this branch before opening (merge commit on684345458) and brought only an unrelatedpackages/qa/dogfood/vitest.config.tschange.Verification
Gate union derived on the final head with
node scripts/pm/dispatch-gates.mjs --repo objectstack-ai/objectstack— 15 families, theunion re-derived after the merge and unchanged. Run on final head
684345458:14 of 15 exit 0, including the headline one:
and
check:skill-frame-sync(4 frame copies isomorphic across 3 files),check:skill-compatibility(11 SKILL.md reconciled against 78 packages),check:skill-identifier-liveness,check:doc-authoring,check:corpus-claim-drift,check:role-word,check:agent-test-spelling,check:pm-governed-merges,check:doc-formula-expressions,check:cross-package-test-inputs,check-ci-filter-parity,check-shard-attestation.1 NOT MEASURED, not red:
node scripts/check-test-completeness.mjsexits 3 withPREREQUISITE NOT MET— it parses aturbo run testlog that CI tees and that a localfamily run has no way to produce. Its own text says the local reading is NOT MEASURED and
that exit 3 is deliberately distinct from a finding's 1.
pnpm lint(repo-wideeslint . --no-inline-config, an unconditional CI step) exit 0 —run in full, not narrowed.
Two
PREREQUISITE NOT METresults cleared by building first, not by waiving:@objectstack/formulathen@objectstack/lint, after whichcheck:doc-formula-expressionsreports 22 record-scoped examples across 427 files clean.Changeset
None —
skip-changeset, following the sweep-flight precedent: this diff is one prose rowin the published catalog and publishes nothing from any package. Every
skills/**-only commit in that flight landed onmainwith no.changeset/entry.Landing
skills/**is a governed surface. Draft, and it stays draft: no seat merges, queues, armsauto-merge, or flips it ready. The maintainer's hand-merge is the landing.
Generated by Claude Code