OKF bundle compaction: 359KB -> 191KB, log-only rules lifted into concepts - #504
Merged
Merged
Conversation
Contributor
|
Important
This repository does not receive automatic reviews because it has fewer than 10 stars. ⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Pro Plus Run ID: Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
…epts Re-reviewed every file in .okf/. Half the bundle carried no knowledge the repo didn't already own. * log.md 134KB -> 30KB. It was 37% of the bundle - larger than every concept combined - and NOT newest-first as OKF §7 requires (two interleaved append orders). Entries dated >= 2026-08-19 kept verbatim; the 87 older ones squashed to one line each from their own `##` headings. Full text stays in git history. * icp-journey-sipoc.md + operational-dependency-map.md: 73KB of verbatim copies of docs/projects/2605-*/30-39-architecture-design/30.05 and 30.06 -> ~1.5KB pointer concepts. Their own index entry already declared the canonical version authoritative; a snapshot that is by definition not authoritative is drift waiting to happen. The dependency map's original-inputs principle (idea + Gmail + browser, nothing else assumed) is stated inline because lesson edits are checked against it. * workflows/testing.md deleted, squashed into build/test-gates.md. It duplicated the visual-regression gate and still carried the superseded "run BOTH bin/test and bin/dtest before committing" rule. Its two unique items moved across: the rake task table and the accept-tolerance policy. 4-eyes (core-reviewer) BLOCKED the first pass: four durable rules lived ONLY in log entries and would have been deleted silently. All lifted before this landed: * Business-layer decision rules (2026-08-09, 2026-08-08) -> workflows/company-layer-ownership.md, including "this repo is public - revenue, rates, headcount and client-book size never go in docs/, .okf/, commit messages or PR descriptions". * 2-column maximum in blog tables (2026-08-08) -> content/voice-rules.md. * Research-vs-adopted-spec doc placement (2026-07-26) -> index.md. Re-review verdict: CLEAR. Also recovered three smaller tells into ci-gates / test-gates (per-STEP list_workflow_jobs timing, container self-bootstrap, the multi-file `ruby a_test.rb b_test.rb` guard). Standing rule added to index.md: the bundle stores knowledge, not history or copies. If a log entry's detail still matters six weeks later, lift it into a concept - the log gets squashed. Gates: /okf:validate --strict conformant (warnings 126 -> 46); bin/hugo-build green. Bundle-only change, no rendered output touched. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
pftg
added a commit
that referenced
this pull request
Aug 20, 2026
Checked today's knowledge against the bundle compaction (359KB -> 191KB) before adding: token layer, img-cropped mobileWidth params, blog-list traps, record-baselines and the GA browser-channel distinction all survived in CONCEPTS rather than only the log - the outcome the compaction wanted. One gap remained, in the section a cold session reads first for visual questions: design/ had no site-palette concept at all. house-visual-spec is in-post SVG artwork, cover-pipeline is covers, so 'what palette does the site use?' resolved to nothing there while the LIGHT decision sat in docs/adr/0003 and architecture/css-pipeline. design/site-palette.md carries the decision, the audience-shaped reasoning that predicts future calls (dark = products bought by developers; light = services bought on trust), the token table, and the three surfaces where dark stays DELIBERATE - so nobody later 'fixes' the blog covers or the vibe-code-rescue campaign page into light. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
pftg
added a commit
that referenced
this pull request
Aug 20, 2026
…re upstream) (#507) * OKF: add the site-palette concept; verify #504 compaction was non-lossy Checked today's knowledge against the bundle compaction (359KB -> 191KB) before adding: token layer, img-cropped mobileWidth params, blog-list traps, record-baselines and the GA browser-channel distinction all survived in CONCEPTS rather than only the log - the outcome the compaction wanted. One gap remained, in the section a cold session reads first for visual questions: design/ had no site-palette concept at all. house-visual-spec is in-post SVG artwork, cover-pipeline is covers, so 'what palette does the site use?' resolved to nothing there while the LIGHT decision sat in docs/adr/0003 and architecture/css-pipeline. design/site-palette.md carries the decision, the audience-shaped reasoning that predicts future calls (dark = products bought by developers; light = services bought on trust), the token table, and the three surfaces where dark stays DELIBERATE - so nobody later 'fixes' the blog covers or the vibe-code-rescue campaign page into light. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> * OKF: CI checkout stalls vs runs slow - re-run, don't raise the cap Three failures in one session (Unit Tests 10m x2, build 15m1s), all inside 'Fetching the repository' and ending 'The operation was canceled', all cleared by a plain re-run completing the same job in 2-3 min. ci-gates documented checkout being slow and the 15/25 timeout raise that followed; it lacked the distinction that decides the response - a cap cannot rescue a step that never progresses. Adds the rule plus the log check that distinguishes a stall from a genuine failure, so nobody re-runs red that deserved to stay red. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> * CI hotfix: blobless clone for the full-history job; root-cause the checkout stalls Paul's hunch was right that the action was at fault, though not our version: actions/checkout#2441 - open since 2026-05-19, silent stalls of 15-25 min on EU runners killed by timeout-minutes. That is exactly our signature (three in one session: Unit Tests 10m x2, build 15m1s, all inside 'Fetching the repository', all cleared by a plain re-run in 2-3 min). Upstream and unfixable by us. What IS ours is how much we ask for. The pack is 1.70 GiB and content/ alone is 625 MB across 1,576 images. _hugo.yml must keep fetch-depth: 0 because enableGitInfo feeds .Lastmod into article:modified_time and schema dateModified - so it now also sets filter: blob:none, which keeps commits and trees in full and skips HISTORICAL blobs. Verified rather than assumed, since the whole point is that GitInfo must keep working: - bare blobless clone: 4.7 MB in 1.1s, against a 1.70 GiB pack (370x) - git log -1 -- content/blog/<post>/index.md still returns the correct commit date in 0.02s, with the clone still at 4.7 MB - zero blobs fetched Also corrects the OKF entry written earlier today, which said 'it's a hang, re-run it' without knowing why. ci-gates now carries the upstream cause, the confirm-before-re-running log check, and the honest limit: this is a mitigation, not a cure, and the real floor is 625 MB of images in git - an LFS/CDN decision, not a checkout flag. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
pftg
added a commit
that referenced
this pull request
Aug 20, 2026
#505) * Correct ADR-0003: #1a8cff is the logo colour; logos out of scope Lane A halted its codemod rather than recolour brand assets and the reason corrects the ADR. After deleting --color-primary the only #1a8cff left in built output was SVG assets - logo-dark.svg contains exactly one hex value, no brand definition' was overstated: true of the documented design system, false of the actual logo. The decision survives with a better reason - a mark colour is not a UI accent. The logo identifies, the accent directs; promoting the mark's blue to 'primary' is what put blue bands, blue tags and blue links on a ruby site. The three logo files stay blue and are OUT OF SCOPE for every design-system phase, not deferred. Also records the trap that produced the finding: SVG assets cannot read CSS custom properties, so ~29 hardcoded icons are invisible to token work and a recolour must sweep them separately. 20.02 counted CSS references and literals but never SVG assets - a gap in my plan, not in the execution. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> * Correct Phase 1a: the !important count, the a11y history, and the link role Three corrections, all surfaced by the agent executing the plan rather than by me writing it. 1. The success signal 'delete all 55 !important workarounds' was wrong and dangerous. 55 counted every !important in four files; only ~19 are anchor-attributable - the rest are @media print rules and legacy heading-margin fights, so chasing the number would have deleted print styles to hit it. Replaced with the falsifiable version: every !important whose comment cites the anchor rule must go, and no other may be touched. The trap generalises - blog-single.css's comment says 'same class of fight ... both die in Phase 1a'. Same class, different cause. 2. #0066d6 is also an accessibility fix, not only a specificity monster: it replaced #1a8cff in Sprint #2 because the brand blue measured 3.37:1 and failed AA. Retiring it means landing the replacement at AA or better, not merely 'not blue'. 3. Body links decided - --ink-900 text with a --color-ruby underline. Not ruby text: ruby is the action colour and a body full of ruby links stops links being distinguishable from buttons. WCAG 1.4.1 requires more than colour to mark a link, so the underline carries the affordance and the text stays calm for long-form reading. Recorded with a do-not-simplify note. Also adds the SVG-asset row the original measured-surface table omitted (50 files: 47 icons swept, 3 logos deliberately untouched). Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> * OKF: the white-wash trap, and why 4 of 6 review agents died Two durable findings from the 3-lane redesign swarm. architecture/css-pipeline.md - computed style, not source, proves the paint. Two sections of the new /friday-report/ page computed to background-color rgba(0,0,0,0): the white behind them was legacy-theme-skin.css's hardcoded .fl-page-content, which ships after the page slice and wins on cascade order. Zero visual delta today because both are #ffffff - which is exactly why it would have sat undetected - and it detonates the moment a --surface token moves off white, leaving a half-recoloured page caused by a file nobody touched. Records the detection method and the id+class fix from new-page.md. Same family as the uppercase #1A8CFF that survived a case-sensitive sweep. workflows/review-swarm.md - review agents failed 4 of 6, all on a Fable credit limit, because work agents carried an explicit opus override while the reviewers they spawned inherited the default. The asymmetry is the hazard: work completes and reports success while its gate quietly does not run. Brief size looks causal rather than incidental - the three that died had long briefs, the one that returned a verdict had the tightest, and a consumption-based limit means the sprawling thorough-looking brief is LESS likely to produce a review. Rules: dead reviewer is not a passed review; idle is ambiguous so ask for the verdict; pass model opus explicitly; a coordinator closing a leg itself must say so and invite contradiction. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> * Sync 2608 to reality: GA4 key-event toggles are closed #508 un-marked page_view and #495 marked contact_cta_click, closing the Phase 0.1 GA4 items this plan still described as outstanding and which I had been reporting to Paul as blocked. Carries the caveat that outlives the fix: un-marking is NOT retroactive, so the ~4,063 historical page-view 'key events' remain in the data and any before/after read spanning 2026-08-13 to 08-20 compares a polluted before against a clean after. Date-bound keyEvents queries or read the underlying event names. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
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 free
to 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.
Re-reviewed every file in
.okf/for size. Half the bundle carried no knowledge the repo didn't already own.What shrank
log.mdicp-journey-sipoc.md+operational-dependency-map.md/okf:validate --strictwarningsThe three squashes
log.mdwas 37% of the bundle - larger than every concept combined - and was NOT newest-first as OKF §7 requires (two interleaved append orders). Entries dated >= 2026-08-19 kept verbatim; the 87 older ones squashed to one line each from their own##headings. Full text stays in git history.docs/projects/2605-*/30-39-architecture-design/30.05and30.06. Their own index entry already declared the canonical version authoritative - a snapshot that is by definition not authoritative is drift waiting to happen. Both are now pointer concepts holding the durable rule plus the canonical path. The dependency map's original-inputs principle (idea + Gmail + browser, nothing else assumed) is stated inline because lesson edits are checked against it.workflows/testing.mddeleted, squashed intobuild/test-gates.md. It duplicated the visual-regression gate and still carried the superseded "run BOTHbin/testandbin/dtestbefore committing" rule -qtesthas been the routine gate since 2026-07-31. Its two unique items moved across (rake task table, accept-tolerance policy).The 4-eyes review is why this is safe
A
core-reviewerpass BLOCKED the first attempt: four durable rules lived ONLY in log entries and a mechanical squash would have deleted live policy silently. All lifted before this landed:workflows/company-layer-ownership.md, including "this repo is public - revenue, rates, headcount and client-book size never go indocs/,.okf/, commit messages or PR descriptions".content/voice-rules.md.index.md.Re-review verdict: CLEAR. Three smaller tells also recovered into
ci-gates/test-gates(per-STEPlist_workflow_jobstiming, container self-bootstrap, the multi-fileruby a_test.rb b_test.rbguard).Standing rule added
index.mdnow states what belongs in the bundle: it stores knowledge, not history or copies. A concept that is a verbatim copy of a repo doc should be a pointer; if a log entry's detail still matters six weeks later, lift it into a concept - the log gets squashed.Gates
/okf:validate .okf --strict-> conformant, warnings 126 -> 46bin/hugo-build-> green (exit 0)🤖 Generated with Claude Code