Skip to content

Commit 2c52e43

Browse files
docs(blog): re-measure the Todo and showcase sizes in the context-window post and correct the "half a window free" sentence (#22293)
Fixes #22273 Clause-②: no ## What this changes One paragraph of `content/blog/context-window-is-the-constraint.mdx` (lines 49-52): the Todo and kitchen-sink showcase sizes, and the clause built on them. Nothing else on the page changes; the CRM table above it (corrected by PR #22267) is untouched. ```diff -The Todo example is ~14.5k tokens. The kitchen-sink showcase app — which -deliberately exercises every metadata type in the protocol, 83 files of it — is -~101k. Even that one, the maximalist case, leaves half a modern context window -free for the actual work. +The Todo example is ~24.5k tokens. The kitchen-sink showcase app — which +deliberately exercises every metadata type in the protocol, 91 files of it — is +~174k. Even that one, the maximalist case, still fits in a 200k-token window — +about 87% of it, leaving about 13% free for the actual work. ``` **The argument is kept; one clause is not.** The paragraph argues that even the maximalist example fits in one window. At ~174k of the 200k-token window the post already uses for the CRM paragraph two lines above, it still does, so that claim stays. "Leaves half a modern context window free" does not survive the new numbers (about 13% is free, not half), so it is replaced with the measured fraction. "A modern context window" became the explicit 200k so the CRM paragraph's "about 9%" and this paragraph's "about 87%" share one denominator. No other sentence on the page depends on the half-window claim; the rest of the post argues from the CRM example. ## Measured at this PR's base Base: `origin/main` 5870716 (the merge base, read in this PR's worktree). Method: bytes of the non-test `.ts` files under the example's `src/`, divided by 4, as recovered on #22248 and applied in PR #22267. No new method and no new gate (triage ruling on the card). ```text $ find examples/app-todo/src -name '*.ts' -not -name '*.test.ts' | wc -l 27 $ find examples/app-todo/src -name '*.ts' -not -name '*.test.ts' | xargs cat | wc -c 97653 $ find examples/app-todo/src -name '*.ts' -not -name '*.test.ts' | xargs cat | wc -l 2383 $ find examples/app-showcase/src -name '*.ts' -not -name '*.test.ts' | wc -l 91 $ find examples/app-showcase/src -name '*.ts' -not -name '*.test.ts' | xargs cat | wc -c 696149 $ find examples/app-showcase/src -name '*.ts' -not -name '*.test.ts' | xargs cat | wc -l 14229 ``` A second reading through git, not the filesystem, agrees on every file count and byte total: `git ls-tree -r -l 5870716 -- examples/APP/src`, summing the sizes of files ending `.ts` and not `.test.ts`. | example | files | bytes | bytes / 4 | the post now says | |:--|--:|--:|--:|:--| | `app-todo` | 27 | 97,653 | 24,413 | ~24.5k | | `app-showcase` | 91 | 696,149 | 174,037 | 91 files, ~174k | Rounding follows the precision the post already uses, as PR #22267 recorded it: the Todo figure to the nearest 500 (the post's "~14.5k"), the showcase figure to the nearest 1k (the post's "~101k"). 174,037 / 200,000 = 87.0%, so about 87% used and about 13% (25,963 tokens) free. Control for the method: the same count over the tree the figures were first written on (`a6058728de`) gives `app-todo` 25 files / 58,255 bytes / 14,564 and `app-showcase` 83 files / 405,447 bytes / 101,362, i.e. the post's original "~14.5k", "83 files" and "~101k". The card's readings at `8cbe255ef` also reproduce exactly (Todo 95,787 bytes / 23,947; showcase 695,310 bytes / 173,828). Between that commit and this base `app-todo` grew by 1,866 bytes (+1.9%) and `app-showcase` by 839 (+0.1%): the figures move with `main`. The Todo rounding band (24,250 to 24,750 tokens, i.e. 97,000 to 99,000 bytes) holds the current reading at 97,653. The old sentence has no other copy: `git grep` for "half a modern context window" finds nothing in the tree after this change, and a grep of the tracked tree for the old figures ("~14.5k", "~101k", "83 files"; release notes and changelogs excluded) found them only in this paragraph; the other pattern hits are unrelated test-shard and vitest comments. ## Verification Docs-only. The gate list was derived from the actual diff with `node scripts/pm/dispatch-gates.mjs --commands --repo objectstack-ai/objectstack` (no path arguments; 1 path against merge base 5870716, 8 changed lines), every command run with its exit code recorded to a file before any pipe, and the record reconciled with `--ran`: ```text ✓ dispatch-gates --ran: 15 derived famil(ies) accounted for — 15 run, 0 NOT-MEASURED (a DERIVED zero — all 15 recorded an exit code and none of them is 3). ``` All 15 exit 0 at head bad1420 (including `check:doc-frontmatter` and its self-test, `check:doc-anchors`, `check:doc-authoring`, `check:nul-bytes`, `check:closing-keyword-parity` and its self-test). One of them, `pnpm --filter @objectstack/lint run check:doc-formula-expressions`, first refused on the fresh worktree with exit 3 (PREREQUISITE NOT MET: `@objectstack/formula` and `@objectstack/lint` were not built). That first pass measured nothing and is not counted as a pass; the two closures were built under the shared verify lock (`turbo run build --filter=@objectstack/formula --filter=@objectstack/lint --concurrency=2`, VERDICT command-exit 0) and the gate was re-run: exit 0. No changeset, `skip-changeset` on the PR: no published package ships `content/**`. Of the 82 tracked `package.json` files, 69 are non-private and all 69 declare a `files` array; none of those entries reaches `content/` or `blog/`, and the same scan counts 69 entries naming `dist` as its positive control. No governed surface is touched (`content/blog/**` is not in the register). ## Acceptance notes - **The numbers will drift again.** Every figure in the paragraph is a hard-coded reading of two example apps that change on `main` daily; the card names no gate and none is added. - **The CRM row beside it already reads 3 lines high.** The table's "Lines | 1,929" (set by #22267, measured at its base `3513ac778`) answers 1,932 at this base by the post's own `find ... | xargs cat | wc -l` command (`app-crm`, 31 files, 74,182 bytes, ~18,545 tokens); `app-crm/src` changed between #22267's base and its merge commit `c8bb3c8d9` (73,889 bytes then, 74,182 at the merge commit), and the bytes are identical at the merge commit and at this base. The tokens and "about 9%" figures still hold. Not edited here: the CRM row is carved out of this card. Same drift class the card already declares; noted, not filed. - **What the post now claims.** The card asked whether a numbers-only fix changes what the post claims: it does, from "half a window left over" to "about 13% left over". The triage ruling (rewrite the sentence to whatever the new numbers support) is what this PR does; whether the post wants a fuller rewrite of its framing is not decided here. --- _Generated by [Claude Code](https://claude.ai/code/session_0115N1oNnQS5WqofZ2DzaT3q)_ Co-authored-by: Claude <noreply@anthropic.com>
1 parent 6d2da32 commit 2c52e43

1 file changed

Lines changed: 4 additions & 4 deletions

File tree

‎content/blog/context-window-is-the-constraint.mdx‎

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -46,10 +46,10 @@ That's the **whole example app**. Not a module of it — the data model, the
4646
UI, the automation, the access rules, all of it. It fits in about 9% of a
4747
200k-token context window.
4848

49-
The Todo example is ~14.5k tokens. The kitchen-sink showcase app — which
50-
deliberately exercises every metadata type in the protocol, 83 files of it — is
51-
~101k. Even that one, the maximalist case, leaves half a modern context window
52-
free for the actual work.
49+
The Todo example is ~24.5k tokens. The kitchen-sink showcase app — which
50+
deliberately exercises every metadata type in the protocol, 91 files of it — is
51+
~174k. Even that one, the maximalist case, still fits in a 200k-token window —
52+
about 87% of it, leaving about 13% free for the actual work.
5353

5454
Measure your own:
5555

0 commit comments

Comments
 (0)