knowledge base · gf.cx portfolio patterns

Patterns that travel

Operating patterns surfaced session-by-session from building the gf.cx portfolio — recipes, traps, design choices, disciplines. Each entry is a pattern that has earned its keep on one surface and is documented so the next developer (future-Dan, or anyone else building in this style) can recognise + reuse it without rediscovering the friction.

Read-me · status of the stack

Source · Dan, 2026-05-27

"Can't tell you how important a pattern like 'Read-me · status of the stack' is to the growth. It's super logical and shows foresight and helps frame the interdependencies between entities and records/bindings and such like."

"This is a GOLD standard set of operating principles."

The problem

A system grows by accretion: new endpoints, new bindings, new vendor accounts, half-done refactors, parked sketches. Without a self-state-tracking surface, two things rot:

The shape

Production-blocking3 items+
Data lifecycle4 items+
Workflow / UX3 items+
Cross-surface integration3 items+
Operational hygiene4 items+
Tag-physical workflow3 items+
People / governance3 items+

An H2 "Read-me · status of the stack" near the bottom of an operator dashboard or category landing. Below it: a stack of collapsible <details> panels — one per priority tier, with:

Why R/Y/G works (and a flat checklist doesn't)

ChoiceWhy
Color via dot, not text-colorDot is at-a-glance even at peripheral vision. The dot does the work before any reading happens.
Categories named in operator's language"Tag-physical workflow" instead of "Hardware" — names the operator already uses internally. Eye finds the right bucket without translation.
Collapsible per-category23 items in a flat list is intimidating + scroll-heavy. 7 collapsed panels fit one phone screen; the eye picks where to dive in.
Count in summaryShows scope without opening. After completions: "2 of 3 done · 1 open" makes velocity visible.
✅ stays + datesVelocity is visible. Future-you knows what was resolved + when + by which session.
How-to-fix sub-line per open itemRe-entering work next session = one-line briefing. The dashboard is actionable, not just descriptive.
Lede summarizes velocity"5 of 23 resolved this session" primes the reader to see the page as alive + moving, not a static gripe list.

Where it applies

Strong candidates — surfaces where the page is both documentation AND a TODO:

Weak candidates — pages whose audience is external:

The portable shape

<h2 class="section-heading">Read-me · <em>status of the stack</em></h2>
<p class="lede">[snapshot date · N of M resolved · brief tier framing]</p>

<details class="gap">
  <summary>
    <span class="gap__pri">🔴</span>
    Category name
    <span class="gap__count">2 of 3 done · 1 open</span>
  </summary>
  <ul>
    <li><span class="gap__title">✅ item title</span> (done YYYY-MM-DD). Brief.</li>
    <li><span class="gap__title">item title.</span> Why it matters.
      <span class="gap__sub">How to close it · effort · who/what blocks.</span></li>
  </ul>
</details>

When it breaks

Trigger to add it to a page

When the page starts having tracked-but-unresolved decisions, bindings, or dependencies that span ≥ 3 categories. Below that, a single TODO list or a Cross-references block is enough. Above that, R/Y/G + collapsible structure starts paying off because the eye needs help finding what matters.

Reference implementation

Canonical exemplar as of 2026-05-27: pa.gf.cx/service-records/ → Read-me · status of the stack. The dashboard tracks the cross-Worker service-records stack (svc.gf.cx + found.gf.cx). After 5 items flipped ✅ in one session, Dan named the underlying pattern — this kb.gf.cx entry codifies it.