Start · chosen once, from the situation a request begins in

architecture-survey

about 4,800 tokens

architecture-survey as it installs, each line coloured by where its words came from.

  • 3 files
  • 17 edits
  • 22 sentences left out
  • 1 source
  • last changed 2026-10-21

Replaces improve-codebase-architecture (retired 2026-10-08).

The text

SKILL.md

about 2,400 tokens
  • Matt Pocock's skills
  • greenline

---

name: "architecture-survey"

description: "Scan a codebase for deepening opportunities and present them as a visual report, then grill through the one you pick. Use for 'refactor what next', 'tech debt', 'this repo is a mess, where do I start', or a scoped architecture review."

---

greenlineOpens the survey: working-file report, orientation only where no record exists

Architecture survey is the start for a question about the code's structure as a whole: "refactor what next", "tech debt", "this repo is a mess, where do I start", or a scoped architecture review. Outside an orientation the survey is a report and edits no file of the repository, so it needs no mode and no record: its report lives in the working files, the id a date and a slug as a change's is, deleted when the survey ends without a finding taken up, and a change that takes one up holds the report under its own id. When `architecture-map` (extra, installs on request) has written the map's snapshot, read it before walking the codebase; once a deepening lands, the map's refresh folds it back in. The owner decides what is taken up, and a finding taken up becomes a change under the mode the owner approves. At an orientation, a repository with documents and no change record on any branch, local or remote-tracking, the survey runs before the first change, as AGENTS.md says, and opens a quick record before it writes its result into the knowledge homes the workspace's work guide names; the report itself stays in the working files. Where a change record exists on any branch, the survey is no orientation: it runs only when the request asks for a survey or the owner names it.

greenlinePoints at the skill's references page for paths and commands

Greenline's paths and commands for this skill stand on its references page, [references/greenline.md](references/greenline.md): read it when the work lands in the workspace.

Matt Pocock's skillsimprove-codebase-architecture/SKILL.md

Surface architectural friction and propose **deepening opportunities**: refactors that turn shallow modules into deep ones. The aim is testability and AI-navigability.

This command is _informed_ by the project's domain model and built on a shared design vocabulary:

greenlineLoads deep-modules for the design vocabulary, by skill mechanism or SKILL.md

- Load deep-modules through the harness's native skill mechanism, or read its installed SKILL.md and required support when the harness has none, for the architecture vocabulary (**module**, **interface**, **depth**, **seam**, **adapter**, **leverage**, **locality**) and its principles (the deletion test, "the interface is the test surface", "one adapter = hypothetical seam, two = real"). Use these terms exactly in every suggestion and in every delegated brief, and don't drift into "component," "service," "API," or "boundary."

Matt Pocock's skillsimprove-codebase-architecture/SKILL.md

- The domain language in `GLOSSARY.md` gives names to good seams; ADRs in `docs/adr/` record decisions this command should not re-litigate.

## Process

### 1. Explore

**Scope before you scan: YAGNI.** Deepening a module pays off by making future changes to it easier, so put extra weight on the parts of the codebase that have recently changed. Decide *where* to look before you look:

- If the user named a direction (a module, a subsystem, a pain point), take it, and skip the inference below.

greenlineStarts from the map snapshot when present, not re-walking measured hot spots

- Otherwise, walk back a good stretch of the commit history (`git log --oneline`) to find the codebase's hot spots, the files and areas that keep coming up, and let those paths pull your attention first. If the changes are scattered with no clear hot spot, widen the net. When the map's snapshot exists, start from it: its drifting nodes and churn tint are these hot spots, already measured, and its unclaimed-files list is ground the map has not described, so inspect that ground before making a finding.

Matt Pocock's skillsimprove-codebase-architecture/SKILL.md

Read the project's domain glossary (`GLOSSARY.md`) and any ADRs in the area you're touching first.

greenlineWalks itself or through one reader of its own it waits for

Then walk the codebase: through one agent the harness's delegation starts, whose report you wait for, or by your own reading where the harness has no delegation; the delegated walk is the survey's one extra agent, so say so before starting it. That agent is the survey's own reader, not a fresh agent of a change's line, and no record cites what it hands back. Don't follow rigid heuristics; explore organically and note where you experience friction:

Matt Pocock's skillsimprove-codebase-architecture/SKILL.md

- Where does understanding one concept require bouncing between many small modules?

- Where are modules **shallow**, with an interface nearly as complex as the implementation?

- Where have pure functions been extracted just for testability, but the real bugs hide in how they're called (no **locality**)?

- Where do tightly-coupled modules leak across their seams?

- Which parts of the codebase are untested, or hard to test through their current interface?

Apply the **deletion test** to anything you suspect is shallow: would deleting it concentrate complexity, or just move it? A "yes, concentrates" is the signal you want.

### 2. Present candidates as an HTML report

greenlineThe report goes in .greenline/tmp/, not the OS temp directorygreenlineThe report is never opened; the owner is told its pathgreenlineA finding taken up copies the report into its change's folder

Write a self-contained HTML file to the working files as `architecture-review-<timestamp>.html` so each run gets a fresh file and nothing lands in the repo: a survey need not create implementation work, and git never sees the working files. Never open it: no `open`, `xdg-open` or `start`, no browser, nothing that reaches the owner's desktop. Tell the owner its absolute path; opening it is the owner's. When the owner takes a finding up, copy the report into that change's folder once its record cites it.

greenlineThe report works offline: embedded CSS and inline SVG, no CDN scripts

The report is offline-complete: **embedded CSS** for layout and styling, and **static inline SVG** for diagrams where a graph/flow/sequence reliably communicates the structure, with no network-loaded script, style, font, or image needed to view it. Mix graph-shaped SVG with hand-crafted CSS/HTML visuals: draw relationships directly in SVG when they are graph-shaped (call graphs, dependencies, sequences), and use hand-built divs/SVG when you want something more editorial (mass diagrams, cross-sections, collapse animations). Each candidate gets a **before/after visualisation**. Be visual.

Matt Pocock's skillsimprove-codebase-architecture/SKILL.md

For each candidate, render a card with:

- **Files**: which files/modules are involved

- **Problem**: why the current architecture is causing friction

- **Solution**: plain English description of what would change

- **Benefits**: explained in terms of locality and leverage, and how tests would improve

- **Before / After diagram**: side-by-side, custom-drawn, illustrating the shallowness and the deepening

- **Recommendation strength**: one of `Strong`, `Worth exploring`, `Speculative`, rendered as a badge

End the report with a **Top recommendation** section: which candidate you'd tackle first and why.

**Use GLOSSARY.md vocabulary for the domain, and the `deep-modules` vocabulary for the architecture.** If `GLOSSARY.md` defines "Order," talk about "the Order intake module," not "the FooBarHandler," and not "the Order service."

**ADR conflicts**: if a candidate contradicts an existing ADR, only surface it when the friction is real enough to warrant revisiting the ADR. Mark it clearly in the card (e.g. a warning callout: _"contradicts ADR-0007, but worth reopening because…"_). Don't list every theoretical refactor an ADR forbids.

greenlineThe offline check reads the file and never opens a browser

See [HTML-REPORT.md](HTML-REPORT.md) for the full HTML scaffold, diagram patterns, and styling guidance, and pass it to the walk's reader. Before handing the report over, read the file for any network-loaded reference, a `src` or a `<link>`'s `href` naming a host, an `@import`, or a `url()` that leaves the file, and remove each; the check is that read, never a browser, and where it could not run, say so and call the report unverified offline.

Matt Pocock's skillsimprove-codebase-architecture/SKILL.md

Do NOT propose interfaces yet. After the file is written, ask the user: "Which of these would you like to explore?"

### 3. Grilling loop

greenlineOffers side effects; whichever change takes the finding up writes them

Once the user picks a candidate, load frame (through the harness's skill mechanism, or its installed SKILL.md) to walk the decision tree with them: constraints, dependencies, the shape of the deepened module, what sits behind the seam, what tests survive. Side effects arise as decisions crystallize; the survey edits no file, so each is offered in one line, and the close step of the change that takes the finding up writes what the owner accepted:

Matt Pocock's skillsimprove-codebase-architecture/SKILL.mdgreenlineOffers a new term for the glossary instead of writing it

- **Naming a deepened module after a concept not in `GLOSSARY.md`?** Offer the term for `GLOSSARY.md` in one line.

Matt Pocock's skillsimprove-codebase-architecture/SKILL.mdgreenlineOffers a sharper glossary entry instead of writing it

- **Sharpening a fuzzy term during the conversation?** Offer the sharper entry in one line.

Matt Pocock's skillsimprove-codebase-architecture/SKILL.md

- **User rejects the candidate with a load-bearing reason?** Offer an ADR, framed as: _"Want me to record this as an ADR so future architecture reviews don't re-suggest it?"_ Only offer when the reason would actually be needed by a future explorer to avoid re-suggesting the same thing; skip ephemeral reasons ("not worth it right now") and self-evident ones.

greenlineDesigns the interface twice through deep-modules, one design after another

- **Want to explore alternative interfaces for the deepened module?** Load deep-modules, the design habit, and design the interface twice by its DESIGN-IT-TWICE.md, one design after another.

greenlineA finding taken up becomes a change run from frame

The survey, its evidence and the grilled candidate return to the owner; a recommendation alone does not authorize implementation. A finding the owner takes up is a change like any other: propose its mode and wait, as AGENTS.md says, open its record with a `## start` section naming architecture-survey and the finding, and run the line from `frame`; its plan step splits the work into tickets only where it needs them. Do not manufacture a planning program for each observation.

greenlineProduces the unopened offline report; frame follows a finding taken up

## Handoff

Consumes: the repository; .greenline/map/snapshot.json when architecture-map (extra) has written it (optional); GLOSSARY.md and the decision records Produces: the offline HTML report under .greenline/tmp/<id>/, never opened, its path told to the owner, copied into the change's folder under .greenline/ledger/<id>/ only when a finding taken up cites it; at an orientation, its result in the knowledge homes; the survey returns to the owner, and a recommendation is not authorization Next: frame, under the mode the owner approves, for a finding the owner takes up; otherwise none, the survey staying in the reply

SKILL.md as installed, byte for byte SHA-256 e52d00e624c1907dbec21df2d101b641e39618ba51120e3561329936f8de4623

HTML-REPORT.md

about 2,200 tokens
  • Matt Pocock's skills
  • greenline

greenlineThe report page says the file is offline-complete, under .greenline/tmp/

The architectural review is rendered as a single self-contained HTML file in the working files. It is offline-complete: the CSS is embedded and every diagram is static inline SVG or HTML, so no script, style, font, or image loads from a network. Inline SVG draws the graph-shaped diagrams; hand-built divs and inline SVG handle the more editorial visuals (mass diagrams, cross-sections). Mix the two: don't lean on one pattern for everything, it'll start to look generic.

greenlineThe report works offline: embedded CSS and inline SVG, no CDN scripts

```html

<!doctype html>

<html lang="en">

<head>

<meta charset="utf-8" />

<title>Architecture review for {{repo name}}</title>

<style>

/* the whole stylesheet is embedded: nothing loads from a network */

body { margin: 0; background: #fafaf9; color: #0f172a; font-family: system-ui, sans-serif; }

main { max-width: 64rem; margin: 0 auto; padding: 3rem 1.5rem; }

main > * + * { margin-top: 3rem; }

article { border: 1px solid #e2e8f0; border-radius: 0.5rem; background: #fff; padding: 1.5rem; }

article + article { margin-top: 2.5rem; }

.badge { display: inline-block; border-radius: 9999px; padding: 0.125rem 0.625rem; font-size: 0.75rem; font-weight: 600; }

.strong { background: #d1fae5; color: #065f46; }

.explore { background: #fef3c7; color: #92400e; }

.speculative { background: #e2e8f0; color: #334155; }

.files { font-family: ui-monospace, monospace; font-size: 0.875rem; }

.label { font-size: 0.75rem; text-transform: uppercase; letter-spacing: 0.05em; }

.pair { display: grid; grid-template-columns: 1fr 1fr; gap: 1.5rem; }

.diagram { border: 1px solid #e2e8f0; border-radius: 0.5rem; background: #fff; padding: 1rem; }

.callout { border: 1px solid #fcd34d; background: #fffbeb; border-radius: 0.375rem; padding: 0.5rem 0.75rem; }

/* small custom layer for the diagrams:

dashed seam lines, hand-drawn-feeling arrow heads, etc. */

.seam { stroke-dasharray: 4 4; }

.leak { stroke: #dc2626; }

.deep { background: linear-gradient(135deg, #0f172a, #1e293b); }

</style>

</head>

<body>

<main>

<header>...</header>

<section id="candidates">...</section>

<section id="top-recommendation">...</section>

</main>

</body>

</html>

```

Matt Pocock's skillsimprove-codebase-architecture/HTML-REPORT.md

## Header

Repo name, date, and a compact legend: solid box = module, dashed line = seam, red arrow = leakage, thick dark box = deep module. No introduction paragraph. Straight into the candidates.

## Candidate card

The diagrams carry the weight. Prose is sparse, plain, and uses the glossary terms (from the `deep-modules` skill) without ceremony.

Each candidate is one `<article>`:

- **Title**: short, names the deepening (e.g. "Collapse the Order intake pipeline").

- **Badge row**: recommendation strength (`Strong` = emerald, `Worth exploring` = amber, `Speculative` = slate), plus a tag for the dependency category (`in-process`, `local-substitutable`, `ports & adapters`, `mock`).

- **Files**: monospaced list (the `.files` class).

- **Before / After diagram**: the centrepiece. Two columns, side by side. See patterns below.

- **Problem**: one sentence. What hurts.

- **Solution**: one sentence. What changes.

- **Wins**: bullets, ≤6 words each. e.g. "Tests hit one interface", "Pricing logic stops leaking", "Delete 4 shallow wrappers".

- **ADR callout** (if applicable): one line in an amber-tinted box.

No paragraphs of explanation. If the diagram needs a paragraph to be understood, redraw the diagram.

## Diagram patterns

Pick the pattern that fits the candidate. Mix them. Don't make every diagram look the same. Variety is part of the point.

### Inline SVG graph (the workhorse for dependencies / call flow)

greenlineThe report works offline: embedded CSS and inline SVG, no CDN scriptsMatt Pocock's skillsimprove-codebase-architecture/HTML-REPORT.md

Draw the graph directly in SVG when the point is "X calls Y calls Z, and look at the mess": modules as `<rect>` elements with a `<text>` label, calls as `<path>` elements ending in an arrowhead `<marker>`, laid out by hand left to right. Wrap it in a `.diagram` card so it doesn't feel parachuted in. Put the `leak` class on leakage edges to colour them red and the `deep` treatment on the deep module. Prefix marker ids per diagram so two SVGs on the page never share one. A hand-drawn sequence (lifelines as vertical lines, messages as horizontal arrows) works well for "before: 6 round-trips; after: 1."

greenlineThe report works offline: embedded CSS and inline SVG, no CDN scripts

```html

<div class="diagram">

<svg viewBox="0 0 560 120" role="img" aria-label="OrderHandler calls OrderValidator, which calls OrderRepo, which leaks into PricingClient">

<defs>

<marker id="c1-arrow" markerWidth="8" markerHeight="6" refX="7" refY="3" orient="auto">

<polygon points="0 0, 8 3, 0 6" fill="#475569" />

</marker>

</defs>

<rect x="8" y="40" width="112" height="40" rx="4" fill="#fff" stroke="#0f172a" />

<text x="64" y="64" text-anchor="middle" font-size="12">OrderHandler</text>

<rect x="168" y="40" width="112" height="40" rx="4" fill="#fff" stroke="#0f172a" />

<text x="224" y="64" text-anchor="middle" font-size="12">OrderValidator</text>

<rect x="328" y="40" width="88" height="40" rx="4" fill="#fff" stroke="#dc2626" />

<text x="372" y="64" text-anchor="middle" font-size="12">OrderRepo</text>

<rect x="456" y="40" width="96" height="40" rx="4" fill="#fff" stroke="#dc2626" />

<text x="504" y="64" text-anchor="middle" font-size="12">PricingClient</text>

<path d="M120 60 H168" stroke="#475569" fill="none" marker-end="url(#c1-arrow)" />

<path d="M280 60 H328" stroke="#475569" fill="none" marker-end="url(#c1-arrow)" />

<path class="leak seam" d="M416 60 H456" stroke-width="2" fill="none" marker-end="url(#c1-arrow)" />

</svg>

</div>

```

Matt Pocock's skillsimprove-codebase-architecture/HTML-REPORT.md

### Hand-built boxes-and-arrows (when the graph needs weight)

Modules as `<div>`s with borders and labels. Arrows as inline SVG `<line>` or `<path>` elements positioned absolutely over a relative container. Reach for this when you want the "after" diagram to feel like one thick-bordered deep module with greyed-out internals, since a plain node graph won't carry that weight.

### Cross-section (good for layered shallowness)

Stack horizontal bands (3rem tall, with a thick left border) to show layers a call passes through. Before: 6 thin layers each doing nothing. After: 1 thick band labelled with the consolidated responsibility.

### Mass diagram (good for "interface as wide as implementation")

Two rectangles per module: one for interface surface area, one for implementation. Before: interface rectangle is nearly as tall as the implementation rectangle (shallow). After: interface rectangle is short, implementation rectangle is tall (deep).

### Call-graph collapse

Before: a tree of function calls rendered as nested boxes. After: the same tree collapsed into one box, with the now-internal calls shown faded inside it.

## Style guidance

- Lean editorial, not corporate-dashboard. Generous whitespace. Serif optional for headings (a serif stack works well with stone/slate).

- Colour sparingly: one accent (emerald or indigo) plus red for leakage and amber for warnings.

- Keep diagrams ~320px tall so before/after sits comfortably side by side without scrolling.

- Use the `.label` treatment (small, uppercase, tracked) for module labels inside diagrams, so they read as schematic, not as UI.

greenlineThe report works offline: embedded CSS and inline SVG, no CDN scripts

- No scripts at all. The report is static: no app code, no interactivity, and nothing fetched from a network, so it reads the same with the network off.

Matt Pocock's skillsimprove-codebase-architecture/HTML-REPORT.md

## Top recommendation section

One larger card. Candidate name, one sentence on why, anchor link to its card. That's it.

## Tone

Plain English, concise, but the architectural nouns and verbs come straight from the `deep-modules` skill. Concision is not an excuse to drift.

**Use exactly:** module, interface, implementation, depth, deep, shallow, seam, adapter, leverage, locality.

**Never substitute:** component, service, unit (for module) · API, signature (for interface) · boundary (for seam) · layer, wrapper (for module, when you mean module).

**Phrasings that fit the style:**

- "Order intake module is shallow: interface nearly matches the implementation."

- "Pricing leaks across the seam."

- "Deepen: one interface, one place to test."

- "Two adapters justify the seam: HTTP in prod, in-memory in tests."

**Wins bullets** name the gain in glossary terms: *"locality: bugs concentrate in one module"*, *"leverage: one interface, N call sites"*, *"interface shrinks; implementation absorbs the wrappers"*. Don't write *"easier to maintain"* or *"cleaner code"*, because those terms aren't in the glossary and don't earn their place.

No hedging, no throat-clearing, no "it's worth noting that…". If a sentence could be a bullet, make it a bullet. If a bullet could be cut, cut it. If a term isn't in the `deep-modules` glossary, reach for one that is before inventing a new one.

references/greenline.md

about 170 tokens
  • greenline
greenlineOpens the skill's mechanics page, read with SKILL.md

# Architecture survey: the practice's mechanics

This page holds where architecture-survey's work lands in the workspace and the commands it runs, which `SKILL.md` names by their nouns. Read it with `SKILL.md` when the work lands in the workspace.

greenlineThe report's working files, the change's folder and the map's snapshot

## Where its work lands

The survey's report is `.greenline/tmp/<id>/architecture-review-<timestamp>.html`, in the working files, the id a date and a slug as a change's is; a change that takes a finding up copies it into its folder, `.greenline/ledger/<id>/`. The map's snapshot, which architecture-map writes, is `.greenline/map/snapshot.json`, and the work guide that names the knowledge homes is `.greenline/WORK.md`.

The edits

Red is upstream's text; green is what greenline shipped in its place.

What the edit kinds mean
method
changes what the method does, under a recorded ruling
correction
fixes an error
scope
fits the text to this skill
pointer
re-points a reference
smaller edits
rename, relocate or adjust tool details
  1. Edit 3 pointer SKILL.md:61

    Upstream: See [HTML-REPORT.md](HTML-REPORT.md) for the full HTML scaffold, diagram patterns, and styling guidance.

    Shipped: See [HTML-REPORT.md](HTML-REPORT.md) for the full HTML scaffold, diagram patterns, and styling guidance, and pass it to the walk's reader.

    The report works offline: embedded CSS and inline SVG, no CDN scripts

    Full reason

    The report is offline-complete: embedded CSS and static inline SVG replace the Tailwind and Mermaid CDN scripts in step 2 and throughout HTML-REPORT.md (the scaffold's stylesheet, the SVG graph pattern in place of the Mermaid workhorse, the utility-class mentions, the no-scripts rule), with a network-off check before handoff and the HTML-REPORT.md passed to any delegate; greenline's consumer must open the report with no network, and HTML-REPORT.md's intro line also names the tmp home the report lives in.

  2. Edit 5 pointer HTML-REPORT.md:3

    Upstream: Mermaid handles graph-shaped diagrams reliably; hand-built divs and inline SVG handle the more editorial visuals (mass diagrams, cross-sections).

    Shipped: Inline SVG draws the graph-shaped diagrams; hand-built divs and inline SVG handle the more editorial visuals (mass diagrams, cross-sections).

    The report works offline: embedded CSS and inline SVG, no CDN scripts

    Full reason

    The report is offline-complete: embedded CSS and static inline SVG replace the Tailwind and Mermaid CDN scripts in step 2 and throughout HTML-REPORT.md (the scaffold's stylesheet, the SVG graph pattern in place of the Mermaid workhorse, the utility-class mentions, the no-scripts rule), with a network-off check before handoff and the HTML-REPORT.md passed to any delegate; greenline's consumer must open the report with no network, and HTML-REPORT.md's intro line also names the tmp home the report lives in.

  3. Edit 6 pointer HTML-REPORT.md:3

    Upstream: Mix the two: don't lean on Mermaid for everything, it'll start to look generic.

    Shipped: Mix the two: don't lean on one pattern for everything, it'll start to look generic.

    The report works offline: embedded CSS and inline SVG, no CDN scripts

    Full reason

    The report is offline-complete: embedded CSS and static inline SVG replace the Tailwind and Mermaid CDN scripts in step 2 and throughout HTML-REPORT.md (the scaffold's stylesheet, the SVG graph pattern in place of the Mermaid workhorse, the utility-class mentions, the no-scripts rule), with a network-off check before handoff and the HTML-REPORT.md passed to any delegate; greenline's consumer must open the report with no network, and HTML-REPORT.md's intro line also names the tmp home the report lives in.

  4. Edit 8 pointer HTML-REPORT.md:58

    Upstream: **Files**: monospaced list, `font-mono text-sm`.

    Shipped: **Files**: monospaced list (the `.files` class).

    The report works offline: embedded CSS and inline SVG, no CDN scripts

    Full reason

    The report is offline-complete: embedded CSS and static inline SVG replace the Tailwind and Mermaid CDN scripts in step 2 and throughout HTML-REPORT.md (the scaffold's stylesheet, the SVG graph pattern in place of the Mermaid workhorse, the utility-class mentions, the no-scripts rule), with a network-off check before handoff and the HTML-REPORT.md passed to any delegate; greenline's consumer must open the report with no network, and HTML-REPORT.md's intro line also names the tmp home the report lives in.

  5. Edit 9 pointer HTML-REPORT.md:71

    Upstream: ### Mermaid graph (the workhorse for dependencies / call flow)

    Shipped: ### Inline SVG graph (the workhorse for dependencies / call flow)

    The report works offline: embedded CSS and inline SVG, no CDN scripts

    Full reason

    The report is offline-complete: embedded CSS and static inline SVG replace the Tailwind and Mermaid CDN scripts in step 2 and throughout HTML-REPORT.md (the scaffold's stylesheet, the SVG graph pattern in place of the Mermaid workhorse, the utility-class mentions, the no-scripts rule), with a network-off check before handoff and the HTML-REPORT.md passed to any delegate; greenline's consumer must open the report with no network, and HTML-REPORT.md's intro line also names the tmp home the report lives in.

  6. Edit 10 pointer HTML-REPORT.md:73

    Upstream: Wrap it in a Tailwind-styled card so it doesn't feel parachuted in.

    Shipped: Wrap it in a `.diagram` card so it doesn't feel parachuted in.

    The report works offline: embedded CSS and inline SVG, no CDN scripts

    Full reason

    The report is offline-complete: embedded CSS and static inline SVG replace the Tailwind and Mermaid CDN scripts in step 2 and throughout HTML-REPORT.md (the scaffold's stylesheet, the SVG graph pattern in place of the Mermaid workhorse, the utility-class mentions, the no-scripts rule), with a network-off check before handoff and the HTML-REPORT.md passed to any delegate; greenline's consumer must open the report with no network, and HTML-REPORT.md's intro line also names the tmp home the report lives in.

  7. Edit 11 pointer HTML-REPORT.md:98

    Upstream: ### Hand-built boxes-and-arrows (when Mermaid's layout fights you)

    Shipped: ### Hand-built boxes-and-arrows (when the graph needs weight)

    The report works offline: embedded CSS and inline SVG, no CDN scripts

    Full reason

    The report is offline-complete: embedded CSS and static inline SVG replace the Tailwind and Mermaid CDN scripts in step 2 and throughout HTML-REPORT.md (the scaffold's stylesheet, the SVG graph pattern in place of the Mermaid workhorse, the utility-class mentions, the no-scripts rule), with a network-off check before handoff and the HTML-REPORT.md passed to any delegate; greenline's consumer must open the report with no network, and HTML-REPORT.md's intro line also names the tmp home the report lives in.

  8. Edit 12 pointer HTML-REPORT.md:100

    Upstream: Reach for this when you want the "after" diagram to feel like one thick-bordered deep module with greyed-out internals, since Mermaid won't render that with the right weight.

    Shipped: Reach for this when you want the "after" diagram to feel like one thick-bordered deep module with greyed-out internals, since a plain node graph won't carry that weight.

    The report works offline: embedded CSS and inline SVG, no CDN scripts

    Full reason

    The report is offline-complete: embedded CSS and static inline SVG replace the Tailwind and Mermaid CDN scripts in step 2 and throughout HTML-REPORT.md (the scaffold's stylesheet, the SVG graph pattern in place of the Mermaid workhorse, the utility-class mentions, the no-scripts rule), with a network-off check before handoff and the HTML-REPORT.md passed to any delegate; greenline's consumer must open the report with no network, and HTML-REPORT.md's intro line also names the tmp home the report lives in.

  9. Edit 13 pointer HTML-REPORT.md:104

    Upstream: Stack horizontal bands (`h-12 border-l-4`) to show layers a call passes through.

    Shipped: Stack horizontal bands (3rem tall, with a thick left border) to show layers a call passes through.

    The report works offline: embedded CSS and inline SVG, no CDN scripts

    Full reason

    The report is offline-complete: embedded CSS and static inline SVG replace the Tailwind and Mermaid CDN scripts in step 2 and throughout HTML-REPORT.md (the scaffold's stylesheet, the SVG graph pattern in place of the Mermaid workhorse, the utility-class mentions, the no-scripts rule), with a network-off check before handoff and the HTML-REPORT.md passed to any delegate; greenline's consumer must open the report with no network, and HTML-REPORT.md's intro line also names the tmp home the report lives in.

  10. Edit 14 pointer HTML-REPORT.md:116

    Upstream: Serif optional for headings (`font-serif` works well with stone/slate).

    Shipped: Serif optional for headings (a serif stack works well with stone/slate).

    The report works offline: embedded CSS and inline SVG, no CDN scripts

    Full reason

    The report is offline-complete: embedded CSS and static inline SVG replace the Tailwind and Mermaid CDN scripts in step 2 and throughout HTML-REPORT.md (the scaffold's stylesheet, the SVG graph pattern in place of the Mermaid workhorse, the utility-class mentions, the no-scripts rule), with a network-off check before handoff and the HTML-REPORT.md passed to any delegate; greenline's consumer must open the report with no network, and HTML-REPORT.md's intro line also names the tmp home the report lives in.

  11. Edit 15 pointer HTML-REPORT.md:119

    Upstream: Use `text-xs uppercase tracking-wider` for module labels inside diagrams, so they read as schematic, not as UI.

    Shipped: Use the `.label` treatment (small, uppercase, tracked) for module labels inside diagrams, so they read as schematic, not as UI.

    The report works offline: embedded CSS and inline SVG, no CDN scripts

    Full reason

    The report is offline-complete: embedded CSS and static inline SVG replace the Tailwind and Mermaid CDN scripts in step 2 and throughout HTML-REPORT.md (the scaffold's stylesheet, the SVG graph pattern in place of the Mermaid workhorse, the utility-class mentions, the no-scripts rule), with a network-off check before handoff and the HTML-REPORT.md passed to any delegate; greenline's consumer must open the report with no network, and HTML-REPORT.md's intro line also names the tmp home the report lives in.

6 smaller edits

Renames, locations and tool details, each with its reason.

  1. Edit 1 tool details SKILL.md:16

    Upstream: Use these terms exactly in every suggestion, and don't drift into "component," "service," "API," or "boundary."

    Shipped: Use these terms exactly in every suggestion and in every delegated brief, and don't drift into "component," "service," "API," or "boundary."

    Loads skills natively and carries the vocabulary into every delegated brief

    Full reason

    Where upstream says 'call the Skill tool with' codebase-design, grilling or domain-modeling, the copy loads the method through the harness's native skill mechanism or reads its installed SKILL.md and required support, and carries the vocabulary into every delegated brief; greenline runs on Codex and Claude Code, neither of which is promised a tool by that name.

  2. Edit 2 rename SKILL.md:57

    Upstream: **Use GLOSSARY.md vocabulary for the domain, and the `/codebase-design` vocabulary for the architecture.**

    Shipped: **Use GLOSSARY.md vocabulary for the domain, and the `deep-modules` vocabulary for the architecture.**

    References to codebase-design now say deep-modules, its roster successor

    Full reason

    renamed skill references and bare roster names in prose (the notation pass); codebase-design is the habit deep-modules since S18a of the plan modes-records-recipes (R22)

  3. Edit 4 rename SKILL.md:67

    Upstream: Once the user picks a candidate, call the Skill tool with "grilling" to walk the decision tree with them: constraints, dependencies, the shape of the deepened module, what sits behind the seam, what tests survive.

    Shipped: Once the user picks a candidate, load frame (through the harness's skill mechanism, or its installed SKILL.md) to walk the decision tree with them: constraints, dependencies, the shape of the deepened module, what sits behind the seam, what tests survive.

    Grilling is now frame, loaded through the skill mechanism

    Full reason

    Upstream's grilling is the roster's frame step, asked for by name, which walks the decision tree (R22).

  4. Edit 7 rename HTML-REPORT.md:52

    Upstream: Prose is sparse, plain, and uses the glossary terms (from the `/codebase-design` skill) without ceremony.

    Shipped: Prose is sparse, plain, and uses the glossary terms (from the `deep-modules` skill) without ceremony.

    References to codebase-design now say deep-modules, its roster successor

    Full reason

    renamed skill references and bare roster names in prose (the notation pass); codebase-design is the habit deep-modules since S18a of the plan modes-records-recipes (R22)

  5. Edit 16 rename HTML-REPORT.md:128

    Upstream: Plain English, concise, but the architectural nouns and verbs come straight from the `/codebase-design` skill.

    Shipped: Plain English, concise, but the architectural nouns and verbs come straight from the `deep-modules` skill.

    References to codebase-design now say deep-modules, its roster successor

    Full reason

    renamed skill references and bare roster names in prose (the notation pass); codebase-design is the habit deep-modules since S18a of the plan modes-records-recipes (R22)

  6. Edit 17 rename HTML-REPORT.md:143

    Upstream: If a term isn't in the `/codebase-design` glossary, reach for one that is before inventing a new one.

    Shipped: If a term isn't in the `deep-modules` glossary, reach for one that is before inventing a new one.

    References to codebase-design now say deep-modules, its roster successor

    Full reason

    renamed skill references and bare roster names in prose (the notation pass); codebase-design is the habit deep-modules since S18a of the plan modes-records-recipes (R22)

What greenline wrote

The full reason for every passage greenline wrote, in the order of the text.

  1. SKILL.md:6 rename

    The skill's title is its roster name, architecture-survey, which R22 gives the start improve-codebase-architecture became.

  2. SKILL.md:8 method

    The opening in the start's own voice: when the block's situation sends an agent here, that the survey edits no file and keeps its report in the working files, the map read first where the extra has written it, and a finding taken up becoming a change under an approved mode. At an orientation the result goes into the knowledge homes and the report stays in the working files; where a change record exists the survey runs only when asked, since QA runs surveyed as an orientation where a record existed (J-60, the fourth family). Since J-93 S2 the front names greenline's homes and commands by their nouns, their paths and commands on the skill's references page. J-102 S2: at an orientation the survey opens a quick record before it writes its result into the knowledge homes, as every write does. R1

  3. SKILL.md:10 pointer

    The front points at the skill's references page, where greenline's paths and commands for it stand since J-93 S2, so the front holds the method alone.

  4. SKILL.md:16 tool details

    Where upstream says 'call the Skill tool with' codebase-design, grilling or domain-modeling, the copy loads the method through the harness's native skill mechanism or reads its installed SKILL.md and required support, and carries the vocabulary into every delegated brief; greenline runs on Codex and Claude Code, neither of which is promised a tool by that name. The design vocabulary is the habit deep-modules since S18a (R22).

    Credits: Matt Pocock's skills

  5. SKILL.md:26 pointer

    Step 1's hot-spot search starts from .greenline/map/snapshot.json when it exists: its drifting nodes and churn tint are the hot spots already measured and its unclaimed-files list is ground to inspect before a finding; an optional consume of the opt-in map's home, so the survey does not re-walk what the map measured. Since J-93 S2 the front names greenline's homes and commands by their nouns, their paths and commands on the skill's references page.

  6. SKILL.md:30 method

    Upstream spawned a sub-agent to walk the codebase; the walk is one delegated agent the survey waits for, or its own reading, one agent at a time (R21), a reader of the survey's own that no change record cites. J-102 S2: no record cites the reader's report, whether or not an orientation's quick record is open. R2

    Credits: Matt Pocock's skills

  7. SKILL.md:42 relocate

    Step 2 writes the report into the working files, `.greenline/tmp/<id>/`, git-ignored, so each run gets a fresh file and nothing lands in the repository, where upstream wrote to the OS temp directory. Since J-93 S2 the front names greenline's homes and commands by their nouns, their paths and commands on the skill's references page.

    Credits: Matt Pocock's skills

  8. SKILL.md:42 method

    The survey never opens its report, by a command or a browser, and tells the owner its path, since a QA run's survey opened the report on the host's desktop (J-60, the fourth family). R3

  9. SKILL.md:42 relocate

    A finding taken up is a change, and what its record relies on is copied into its folder, as the installed work guide puts what a record cites. Since J-93 S2 the front names greenline's homes and commands by their nouns, their paths and commands on the skill's references page.

  10. SKILL.md:44 pointer

    The report is offline-complete: embedded CSS and static inline SVG replace the Tailwind and Mermaid CDN scripts in step 2 and throughout HTML-REPORT.md (the scaffold's stylesheet, the SVG graph pattern in place of the Mermaid workhorse, the utility-class mentions, the no-scripts rule), with a network-off check before handoff and the HTML-REPORT.md passed to any delegate; greenline's consumer must open the report with no network, and HTML-REPORT.md's intro line also names the tmp home the report lives in.

    Credits: Matt Pocock's skills

  11. SKILL.md:61 method

    The offline check before handoff is a read of the file for a network-loaded reference and never a browser, since a QA run's survey rendered and opened its report on the host's desktop (J-60, the fourth family). R3

  12. SKILL.md:67 method

    The domain model is kept current by the close step of the change that takes a finding up, where upstream called domain-modeling during the survey; the survey edits no file, so each side effect is offered. R4

    Credits: Matt Pocock's skills

  13. SKILL.md:69 method

    The survey edits no file: a new term is offered, and the close step writes it into the glossary. R4

  14. SKILL.md:70 method

    The survey edits no file: a sharper term is offered, and the close step writes it. R4

  15. SKILL.md:72 method

    Exploring alternative interfaces loads the design habit deep-modules, renamed from codebase-design at S18a, whose design-it-twice page makes the designs one after another, where upstream named codebase-design and parallel sub-agents (R20, R21). R5

    Credits: Matt Pocock's skills

  16. SKILL.md:74 pointer

    A finding taken up is a change proposed and run on the line, its record's start section naming the survey, where upstream ended with its own next stages; tickets come only from the plan step.

  17. SKILL.md:76 pointer

    A start's handoff: the report produced in the working files, and the step its hand reaches, frame under the approved mode for a finding taken up, or none. The report is never opened and its path is told to the owner; at an orientation the result goes into the knowledge homes.

  18. HTML-REPORT.md:3 pointer

    The report is offline-complete: embedded CSS and static inline SVG replace the Tailwind and Mermaid CDN scripts in step 2 and throughout HTML-REPORT.md (the scaffold's stylesheet, the SVG graph pattern in place of the Mermaid workhorse, the utility-class mentions, the no-scripts rule), with a network-off check before handoff and the HTML-REPORT.md passed to any delegate; greenline's consumer must open the report with no network, and HTML-REPORT.md's intro line also names the tmp home the report lives in; the report lives in the working files, `.greenline/tmp/<id>/`, as the survey's SKILL.md says, since S17. Since J-93 S2 the front names greenline's homes and commands by their nouns, their paths and commands on the skill's references page.

    Credits: Matt Pocock's skills

  19. HTML-REPORT.md:7 pointer

    The report is offline-complete: embedded CSS and static inline SVG replace the Tailwind and Mermaid CDN scripts in step 2 and throughout HTML-REPORT.md (the scaffold's stylesheet, the SVG graph pattern in place of the Mermaid workhorse, the utility-class mentions, the no-scripts rule), with a network-off check before handoff and the HTML-REPORT.md passed to any delegate; greenline's consumer must open the report with no network, and HTML-REPORT.md's intro line also names the tmp home the report lives in.

    Credits: Matt Pocock's skills

  20. HTML-REPORT.md:73 pointer

    The report is offline-complete: embedded CSS and static inline SVG replace the Tailwind and Mermaid CDN scripts in step 2 and throughout HTML-REPORT.md (the scaffold's stylesheet, the SVG graph pattern in place of the Mermaid workhorse, the utility-class mentions, the no-scripts rule), with a network-off check before handoff and the HTML-REPORT.md passed to any delegate; greenline's consumer must open the report with no network, and HTML-REPORT.md's intro line also names the tmp home the report lives in.

    Credits: Matt Pocock's skills

  21. HTML-REPORT.md:73 pointer

    The report is offline-complete: embedded CSS and static inline SVG replace the Tailwind and Mermaid CDN scripts in step 2 and throughout HTML-REPORT.md (the scaffold's stylesheet, the SVG graph pattern in place of the Mermaid workhorse, the utility-class mentions, the no-scripts rule), with a network-off check before handoff and the HTML-REPORT.md passed to any delegate; greenline's consumer must open the report with no network, and HTML-REPORT.md's intro line also names the tmp home the report lives in.

    Credits: Matt Pocock's skills

  22. HTML-REPORT.md:120 pointer

    The report is offline-complete: embedded CSS and static inline SVG replace the Tailwind and Mermaid CDN scripts in step 2 and throughout HTML-REPORT.md (the scaffold's stylesheet, the SVG graph pattern in place of the Mermaid workhorse, the utility-class mentions, the no-scripts rule), with a network-off check before handoff and the HTML-REPORT.md passed to any delegate; greenline's consumer must open the report with no network, and HTML-REPORT.md's intro line also names the tmp home the report lives in.

  23. references/greenline.md:1 scope

    The skill's references page opens: greenline's mechanics for the skill, the paths and commands its front names by their nouns, held apart from the upstream prose since J-93 S2.

  24. references/greenline.md:5 relocate

    architecture-survey's mechanics: the working files and the change's folder its report lands in, the map's snapshot and the work guide, held apart since J-93 S2.

What it left out

Matt Pocock's skills

Matt Pocock's skills, improve-codebase-architecture/SKILL.md: 13 of 62 sentences left out
  1. # Improve Codebase Architecture left out: The title becomes the roster name, architecture-survey (R22). replaced by line 6 of SKILL.md
  2. 3 sentences taken
  3. Call the Skill tool with "codebase-design" for the architecture vocabulary (**module**, **interface**, **depth**, **seam**, **adapter**, **leverage**, **locality**) and its principles (the deletion test, "the interface is the test surface", "one adapter = hypothetical seam, two = real"). left out: Where upstream says 'call the Skill tool with' codebase-design, grilling or domain-modeling, the copy loads the method through the harness's native skill mechanism or reads its installed SKILL.md and required support, and carries the vocabulary into every delegated brief; greenline runs on Codex and Claude Code, neither of which is promised a tool by that name. replaced by line 16 of SKILL.md
  4. 11 sentences taken
  5. Then spawn a sub-agent to walk the codebase. left out: Spawning a sub-agent to walk the codebase gives way to one delegated walk or the agent's own (R21). R5 replaced by line 30 of SKILL.md
  6. 9 sentences taken
  7. Write a self-contained HTML file to the OS temp directory so nothing lands in the repo.
  8. Resolve the temp dir from `$TMPDIR`, falling back to `/tmp` (or `%TEMP%` on Windows), and write to `<tmpdir>/architecture-review-<timestamp>.html` so each run gets a fresh file. 2 sentences left out: Step 2 writes the report into the working files, `.greenline/tmp/<id>/`, where upstream wrote to the OS temp directory. replaced by line 42 of SKILL.md
  9. Open it for the user (`xdg-open <path>` on Linux, `open <path>` on macOS, `start <path>` on Windows) and tell them the absolute path. left out: The survey never opens its report, by a command or a browser, and tells the owner its path, since a QA run's survey opened the report on the host's desktop (J-60, the fourth family). R3 replaced by line 42 of SKILL.md
  10. The report uses **Tailwind via CDN** for layout and styling, and **Mermaid via CDN** for diagrams where a graph/flow/sequence reliably communicates the structure.
  11. Mix Mermaid with hand-crafted CSS/SVG visuals: use Mermaid when relationships are graph-shaped (call graphs, dependencies, sequences), and hand-built divs/SVG when you want something more editorial (mass diagrams, cross-sections, collapse animations). 2 sentences left out: The report is offline-complete: embedded CSS and static inline SVG replace the Tailwind and Mermaid CDN scripts in step 2 and throughout HTML-REPORT.md (the scaffold's stylesheet, the SVG graph pattern in place of the Mermaid workhorse, the utility-class mentions, the no-scripts rule), with a network-off check before handoff and the HTML-REPORT.md passed to any delegate; greenline's consumer must open the report with no network, and HTML-REPORT.md's intro line also names the tmp home the report lives in. replaced by line 44 of SKILL.md
  12. 20 sentences taken
  13. Side effects happen inline as decisions crystallize; call the Skill tool with "domain-modeling" to keep the domain model current as you go: left out: Calling domain-modeling during the survey gives way to side effects offered and written at the close step. R4 replaced by line 67 of SKILL.md
  14. 1 sentence taken
  15. Add the term to `GLOSSARY.md`.
  16. Create the file lazily if it doesn't exist. 2 sentences left out: both side-effect bullets write GLOSSARY.md only when the request's grant covers it and otherwise offer the entry in one line, matching the block's situational-skill rule; carried from roster-keepers-2026-09-15; the method edit is on the operator's word of 2026-09-15 at the card J-8, with J-2 folded in R6 replaced by line 69 of SKILL.md
  17. 1 sentence taken
  18. Update `GLOSSARY.md` right there. left out: both side-effect bullets write GLOSSARY.md only when the request's grant covers it and otherwise offer the entry in one line, matching the block's situational-skill rule; carried from roster-keepers-2026-09-15; the method edit is on the operator's word of 2026-09-15 at the card J-8, with J-2 folded in R6 replaced by line 70 of SKILL.md
  19. 4 sentences taken
  20. Call the Skill tool with "codebase-design" and use its design-it-twice parallel sub-agent pattern. left out: The design-it-twice parallel sub-agent pattern gives way to designs made one after another by the design habit (R20, R21). R5 replaced by line 72 of SKILL.md
Matt Pocock's skills, improve-codebase-architecture/HTML-REPORT.md: 9 of 85 sentences left out
  1. The architectural review is rendered as a single self-contained HTML file in the OS temp directory. left out: The report is offline-complete: embedded CSS and static inline SVG replace the Tailwind and Mermaid CDN scripts in step 2 and throughout HTML-REPORT.md (the scaffold's stylesheet, the SVG graph pattern in place of the Mermaid workhorse, the utility-class mentions, the no-scripts rule), with a network-off check before handoff and the HTML-REPORT.md passed to any delegate; greenline's consumer must open the report with no network, and HTML-REPORT.md's intro line also names the tmp home the report lives in. replaced by line 3 of HTML-REPORT.md
  2. Tailwind and Mermaid both come from CDNs. left out: The report is offline-complete: embedded CSS and static inline SVG replace the Tailwind and Mermaid CDN scripts in step 2 and throughout HTML-REPORT.md (the scaffold's stylesheet, the SVG graph pattern in place of the Mermaid workhorse, the utility-class mentions, the no-scripts rule), with a network-off check before handoff and the HTML-REPORT.md passed to any delegate; greenline's consumer must open the report with no network, and HTML-REPORT.md's intro line also names the tmp home the report lives in.
  3. 3 sentences taken
  4. ```html <!doctype html> <html lang="en"> <head> <meta charset="utf-8" /> <title>Architecture review for {{repo name}}</title> <script src="https://cdn.tailwindcss.com"></script> <script type="module"> import mermaid from "https://cdn.jsdelivr.net/npm/mermaid@11/dist/mermaid.esm.min.mjs"; mermaid.initialize({ startOnLoad: true, theme: "neutral", securityLevel: "loose" }); </script> <style> /* small custom layer for things Tailwind doesn't cover cleanly: dashed seam lines, hand-drawn-feeling arrow heads, etc. */ .seam { stroke-dasharray: 4 4; } .leak { stroke: #dc2626; } .deep { background: linear-gradient(135deg, #0f172a, #1e293b); } </style> </head> <body class="bg-stone-50 text-slate-900 font-sans"> <main class="max-w-5xl mx-auto px-6 py-12 space-y-12"> <header>...</header> <section id="candidates" class="space-y-10">...</section> <section id="top-recommendation">...</section> </main> </body> </html> ``` left out: The report is offline-complete: embedded CSS and static inline SVG replace the Tailwind and Mermaid CDN scripts in step 2 and throughout HTML-REPORT.md (the scaffold's stylesheet, the SVG graph pattern in place of the Mermaid workhorse, the utility-class mentions, the no-scripts rule), with a network-off check before handoff and the HTML-REPORT.md passed to any delegate; greenline's consumer must open the report with no network, and HTML-REPORT.md's intro line also names the tmp home the report lives in. replaced by line 7 of HTML-REPORT.md
  5. 29 sentences taken
  6. Use a Mermaid `flowchart` or `graph` when the point is "X calls Y calls Z, and look at the mess." left out: The report is offline-complete: embedded CSS and static inline SVG replace the Tailwind and Mermaid CDN scripts in step 2 and throughout HTML-REPORT.md (the scaffold's stylesheet, the SVG graph pattern in place of the Mermaid workhorse, the utility-class mentions, the no-scripts rule), with a network-off check before handoff and the HTML-REPORT.md passed to any delegate; greenline's consumer must open the report with no network, and HTML-REPORT.md's intro line also names the tmp home the report lives in. replaced by line 73 of HTML-REPORT.md
  7. 1 sentence taken
  8. Style with classDef to colour leakage edges red and the deep module dark. left out: The report is offline-complete: embedded CSS and static inline SVG replace the Tailwind and Mermaid CDN scripts in step 2 and throughout HTML-REPORT.md (the scaffold's stylesheet, the SVG graph pattern in place of the Mermaid workhorse, the utility-class mentions, the no-scripts rule), with a network-off check before handoff and the HTML-REPORT.md passed to any delegate; greenline's consumer must open the report with no network, and HTML-REPORT.md's intro line also names the tmp home the report lives in.
  9. Sequence diagrams work well for "before: 6 round-trips; after: 1." left out: The report is offline-complete: embedded CSS and static inline SVG replace the Tailwind and Mermaid CDN scripts in step 2 and throughout HTML-REPORT.md (the scaffold's stylesheet, the SVG graph pattern in place of the Mermaid workhorse, the utility-class mentions, the no-scripts rule), with a network-off check before handoff and the HTML-REPORT.md passed to any delegate; greenline's consumer must open the report with no network, and HTML-REPORT.md's intro line also names the tmp home the report lives in. replaced by line 73 of HTML-REPORT.md
  10. ```html <div class="rounded-lg border border-slate-200 bg-white p-4"> <pre class="mermaid"> flowchart LR A[OrderHandler] --> B[OrderValidator] B --> C[OrderRepo] C -.leak.-> D[PricingClient] classDef leak stroke:#dc2626,stroke-width:2px; class C,D leak </pre> </div> ``` left out: The report is offline-complete: embedded CSS and static inline SVG replace the Tailwind and Mermaid CDN scripts in step 2 and throughout HTML-REPORT.md (the scaffold's stylesheet, the SVG graph pattern in place of the Mermaid workhorse, the utility-class mentions, the no-scripts rule), with a network-off check before handoff and the HTML-REPORT.md passed to any delegate; greenline's consumer must open the report with no network, and HTML-REPORT.md's intro line also names the tmp home the report lives in.
  11. 22 sentences taken
  12. The only scripts are the Tailwind CDN and the Mermaid ESM import.
  13. The report is otherwise static: no app code, no interactivity beyond Mermaid's own rendering. 2 sentences left out: The report is offline-complete: embedded CSS and static inline SVG replace the Tailwind and Mermaid CDN scripts in step 2 and throughout HTML-REPORT.md (the scaffold's stylesheet, the SVG graph pattern in place of the Mermaid workhorse, the utility-class mentions, the no-scripts rule), with a network-off check before handoff and the HTML-REPORT.md passed to any delegate; greenline's consumer must open the report with no network, and HTML-REPORT.md's intro line also names the tmp home the report lives in.

The ledger entry

greenline's ledger logs how each skill was made and changed, with a reason for each entry.

2026-10-21 2026-10-21-architecture-survey-record-before-the-map

At an orientation a quick record opens before the result is written

At an orientation the survey opens a quick record before it writes its result into the knowledge homes, as every write does, so the hooks' hold has no exempt path (J-102 S2).

Authorised by
2026-10-21 The operator's card of 2026-10-21, "A record for every write (Recommended)" (docs/DECISIONS.md, the rows of 2026-10-21): a close asked for by name that writes only to the decisions book, the ADR home or the glossary, and the orientation's survey writing its result into the knowledge homes, each open a quick record first, so the hooks' hold on a workspace while no change is open is one rule with no list of exempt paths
Pages it touched
SKILL.md
Rulings, R1 to R15
  1. The operator's rulings of 2026-10-04, "cool then lock everything in": a start that edits no file needs no mode and no record, and a finding taken up is a change under the mode the owner approves; R16 of 2026-10-07, a start chosen from the situation a request begins in, a durable output the request did not ask for offered in one line; and R22 of 2026-10-08, "yes amend, with one change", the name architecture-survey and the glossary written at the close step; The operator's card of 2026-10-15 on the QA series, "One fix job after the fifth family", with the delegation of 2026-10-16 whose words finalise the fix job's slices: a start or a habit loads only in the situation its row names, architecture-survey at an orientation and never as one where a change record exists, secrets only with a secret in reach and ponytail before code the request leaves open; a start is named in the record only when it ran; the survey never opens its report; a session with nothing to resume says so and asks for the request; diagnose ranks its hypotheses before the first probe and keeps them ranked; and ponytail builds only on a measured need and reads simplify.md before a refactor; The operator's words of 2026-10-18 on the redesign (N-56, items 2 and 7), "we need the upstream prose upfront and references hold how to work meaning the artefacts etc" and, on the ingest procedures, "we wanna have there prose .. what we don't wanna have is there artefact system and fit them to use ours": a skill's front is the upstream prose its recipe cuts, and greenline's mechanics, where the step's work lands, its section's form, its commands and its depths at each mode, stand on its references page (J-93 S2); The operator's card of 2026-10-21, "A record for every write (Recommended)" (docs/DECISIONS.md, the rows of 2026-10-21): a close asked for by name that writes only to the decisions book, the ADR home or the glossary, and the orientation's survey writing its result into the knowledge homes, each open a quick record first, so the hooks' hold on a workspace while no change is open is one rule with no list of exempt paths
  2. The operator's ruling R21 of 2026-10-08 on orchestration ("orchestration related skills ... have be re thought in to being usable on all harnesses") and the R3 ruling of that day, "yes go ahead", on the portable forms: architecture-survey walks the codebase with one delegated agent it waits for, or by its own reading where the harness has no delegation, and the designs of an alternative interface are made one after another, never by parallel agents (R20: "we are not doing worktrees and parralel susbs at all"); The operator's cards of 2026-10-14 on part 3 of the-whole-change, each "Rule as proposed": one agent at a time through the harness's delegation, in the change's one checkout and never a worktree; one brief for every fresh agent, the change's front matter, its acceptance, its id, the path of its report and the skill it works by, then the step's extras, and no fresh agent delegates; every fresh agent's report is <step>-<n>.md in the change's folder; the fix rounds are per step, and a fix after verify is not reviewed again outside a loop without the owner's word; verify's verdicts stand as the agent gave them; and where the harness has no delegation the block's fallback runs every depth above written; The operator's card of 2026-10-21, "A record for every write (Recommended)" (docs/DECISIONS.md, the rows of 2026-10-21): a close asked for by name that writes only to the decisions book, the ADR home or the glossary, and the orientation's survey writing its result into the knowledge homes, each open a quick record first, so the hooks' hold on a workspace while no change is open is one rule with no list of exempt paths
  3. The operator's card of 2026-10-15 on the QA series, "One fix job after the fifth family", with the delegation of 2026-10-16 whose words finalise the fix job's slices: a start or a habit loads only in the situation its row names, architecture-survey at an orientation and never as one where a change record exists, secrets only with a secret in reach and ponytail before code the request leaves open; a start is named in the record only when it ran; the survey never opens its report; a session with nothing to resume says so and asks for the request; diagnose ranks its hypotheses before the first probe and keeps them ranked; and ponytail builds only on a measured need and reads simplify.md before a refactor
  4. The operator's rulings of 2026-10-04, "cool then lock everything in": a start that edits no file needs no mode and no record, and a finding taken up is a change under the mode the owner approves; R16 of 2026-10-07, a start chosen from the situation a request begins in, a durable output the request did not ask for offered in one line; and R22 of 2026-10-08, "yes amend, with one change", the name architecture-survey and the glossary written at the close step
  5. The operator's ruling R21 of 2026-10-08 on orchestration ("orchestration related skills ... have be re thought in to being usable on all harnesses") and the R3 ruling of that day, "yes go ahead", on the portable forms: architecture-survey walks the codebase with one delegated agent it waits for, or by its own reading where the harness has no delegation, and the designs of an alternative interface are made one after another, never by parallel agents (R20: "we are not doing worktrees and parralel susbs at all")
  6. roster-keepers-fix-2026-09-15: the operator's ruling of 2026-09-15 at the card J-8, the register's row of that date, frozen as the witness
  7. The method items carry the operator's ruling R21 of 2026-10-08 on harness-bound and orchestration content ("harness specific skills have be re thought in to being usable on all harnesses") and the R3 ruling of that day, "yes go ahead", on the portable forms, the walk one delegated agent or the agent's own and the designs made one after another (R20: "we are not doing worktrees and parralel susbs at all")
  8. the operator's rulings of 2026-10-04, "cool then lock everything in": a start hands the job to a mode the owner approves, every change has one record with its working files and its folder, and a start that edits no file needs no mode and no record
  9. R16 of 2026-10-07, a start chosen from the situation a request begins in ("update the agents md created by greenline product to mention the kind with the skill table and also prose about when to use what kind skill")
  10. the operator's ruling R22 of 2026-10-08 on the re-cut brief, "yes amend, with one change": the roster table's names stand, router, diagnose and architecture-survey among them, with the trial names idea-refine, constraint-driven-development, correct and improve-instructions
  11. its retention under the minimum is the copy as it stood, moved under the operator's ruling of 2026-10-04 on Q1, "okay then lock in what you recommend", and inventoried under the docs/DECISIONS.md row of 2026-10-01 on existing divergence, and the portable edits of R21 are its re-cut's
  12. J-59, on the operator's words of 2026-10-09 ('okay then implement all of this'): a gist of at most twelve words on every account whose reason is stated; no text, measure or method changes
  13. The operator's cards of 2026-10-14 on part 3 of the-whole-change, each "Rule as proposed": one agent at a time through the harness's delegation, in the change's one checkout and never a worktree; one brief for every fresh agent, the change's front matter, its acceptance, its id, the path of its report and the skill it works by, then the step's extras, and no fresh agent delegates; every fresh agent's report is <step>-<n>.md in the change's folder; the fix rounds are per step, and a fix after verify is not reviewed again outside a loop without the owner's word; verify's verdicts stand as the agent gave them; and where the harness has no delegation the block's fallback runs every depth above written
  14. The operator's words of 2026-10-18 on the redesign (N-56, items 2 and 7), "we need the upstream prose upfront and references hold how to work meaning the artefacts etc" and, on the ingest procedures, "we wanna have there prose .. what we don't wanna have is there artefact system and fit them to use ours"; and J-93 S2's finalise words of 2026-10-19, "Fast route, merged slices, parallel jobs (Recommended)": a skill's front is the upstream prose its recipe cuts, and its mechanics, where its work lands, its section's form, its depths at each mode and its commands, stand on its references page
  15. The operator's card of 2026-10-21, "A record for every write (Recommended)" (docs/DECISIONS.md, the rows of 2026-10-21): a close asked for by name that writes only to the decisions book, the ADR home or the glossary, and the orientation's survey writing its result into the knowledge homes, each open a quick record first, so the hooks' hold on a workspace while no change is open is one rule with no list of exempt paths
6 earlier entries
  1. 2026-10-19 2026-10-19-architecture-survey-front-and-references

    architecture-survey's paths and commands move to a references page

    Pages it touched: HTML-REPORT.md, SKILL.md, references/greenline.md

  2. 2026-10-17 2026-10-17-architecture-survey-unopened-report

    The report is never opened; orientation only where no record exists

    Pages it touched: SKILL.md

  3. 2026-10-14 2026-10-14-architecture-survey-walk-reader

    The survey's walking agent is its own reader, cited by no record

    Pages it touched: SKILL.md

  4. 2026-10-09 2026-10-09-architecture-survey-gists

    Every account gets a short gist for the website

  5. 2026-10-08 2026-10-08-architecture-survey-rename

    Names deep-modules for vocabulary and designing twice

    Pages it touched: HTML-REPORT.md, SKILL.md

  6. 2026-10-08 2026-10-08-architecture-survey-recipe

    Improve-codebase-architecture renamed and re-cut as a start

    Pages it touched: HTML-REPORT.md, SKILL.md