The repo outgrew a single-project layout: the reusable form-language template and the draft paper about the method were mixed in with Ecuador-specific ref/narratives/docs, and a second real project (Harbor House) had been growing inside templates/examples/ despite no longer being just a template demo. Split into: - method/ - the generalized form-language prompt template and the paper about the method, project-agnostic - projects/ecuador-museum/ - the original counter-proposal (ref/, narratives/, docs/, unchanged in content) - projects/harbor-house/ - promoted out of templates/examples/, now a peer project with its own ref/narratives/docs, including previously untracked pattern subset, narrative, and illustration material Root CLAUDE.md now covers the shared method and repo-wide conventions; each project gets its own CLAUDE.md with project-specific brief, inputs, and status. Updated all internal path references (paper.md, outline.md, per-project CLAUDE.md, settings.local.json). Dropped stray scratch files superseded by proper copies (all.txt, the already- converted pattern-language PDF). Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
146 lines
6.8 KiB
Markdown
146 lines
6.8 KiB
Markdown
# Pattern-Language / Form-Language Design Method — Tooling & Projects
|
|
|
|
## What this repo is
|
|
|
|
This repo holds a **reusable method** for synthesizing human-centered
|
|
architectural design narratives from Christopher Alexander's pattern
|
|
language plus a region-specific form language, together with the
|
|
**concrete projects** that apply it. It started as a single project (the
|
|
Ecuador museum counter-proposal); the method and tooling were then
|
|
generalized out of that project once a second, unrelated project (Harbor
|
|
House) needed the same pipeline. Layout:
|
|
|
|
```
|
|
method/ generalized, project-agnostic tooling + the paper about it
|
|
form-language-prompt-template.md
|
|
paper/ draft paper on the method, extending buildings-15-02400
|
|
|
|
projects/
|
|
ecuador-museum/ National Museum of Ecuador counter-proposal (see its CLAUDE.md)
|
|
ref/ narratives/ docs/
|
|
harbor-house/ Harbor House travellers' inn, Sheffield (see its CLAUDE.md)
|
|
ref/ narratives/ docs/
|
|
```
|
|
|
|
Each project directory has its own `CLAUDE.md` with that project's brief,
|
|
inputs, deliverable conventions, and status. This root file covers what's
|
|
shared: the method itself, and repo-wide conventions.
|
|
|
|
Related but **separate** repositories (not part of this monorepo):
|
|
|
|
- `homemaker-addon` — automates spatial layout generation; consumes the
|
|
output of this repo's projects (e.g. the Harbor House proposal) but is
|
|
developed independently and has its own history/tooling.
|
|
|
|
## Method
|
|
|
|
The generalized method (`method/`) is described in and extends:
|
|
|
|
> Postle, B.; Salingaros, N.A. "LLM and Pattern Language Synthesis: A Hybrid
|
|
> Tool for Human-Centered Architectural Design." *Buildings* 2025, 15, 2400.
|
|
> (`projects/ecuador-museum/ref/buildings-15-02400-v2.txt`) — Bruno is the
|
|
> paper's first author. `method/paper/` is a draft follow-up paper covering
|
|
> the extension to a second, form-language input and validation across two
|
|
> independent projects (Ecuador, Harbor House).
|
|
|
|
Core idea: Christopher Alexander's *A Pattern Language* (1977) encodes 253
|
|
human-centered design patterns, but at 1166 pages it's too unwieldy for
|
|
direct practical use, and requires expert familiarity to select and combine
|
|
patterns. The method's workaround:
|
|
|
|
1. A web tool ([APL-Companion](https://apl-companion.netlify.app/apl.html))
|
|
lets someone familiar with the patterns curate a **project-specific
|
|
subset** of the 253, then export it as a condensed PDF (titles +
|
|
paraphrased summaries only, no navigation chrome). PDF exports are
|
|
converted to Markdown once received (see Conventions below).
|
|
2. Optionally, a **form language** (region/climate-specific vocabulary of
|
|
materials, massing, color, and ornament) is generated or supplied as a
|
|
second input — `method/form-language-prompt-template.md` generalizes the
|
|
prompting process used to produce one, for reuse on any region/typology.
|
|
3. The pattern subset (and form language, if used) is fed to an LLM as
|
|
context, along with a prompt describing the project (purpose, scale,
|
|
local context) and a request for a **narrative description of the human
|
|
experience** of the building — look, feel, and ornamental treatment —
|
|
grounded only in the selected patterns.
|
|
4. The LLM's narrative is checked for fidelity against the pattern subset
|
|
(any element not traceable to a selected pattern is a hallucination to be
|
|
caught and regenerated away).
|
|
5. Optionally, the narrative can later be used as a prompt for AI image
|
|
synthesis to produce illustrative (not prescriptive) visuals — the paper
|
|
found this reliably reveals human-centered forms even with no style
|
|
imposed. Image generation itself is run externally (by the project owner,
|
|
via whatever tool), not by this tooling; this repo writes the detailed
|
|
image-generation prompts and embeds the resulting images into each
|
|
project's presentation document.
|
|
|
|
The output of the method is words, not drawings — the operational chain is
|
|
*pattern repository → project-specific pattern subset (+ optional form
|
|
language) → LLM narrative synthesis → evaluation*.
|
|
|
|
Per-project specifics (which stakeholder viewpoints to write, deliverable
|
|
file layout, status) are in each project's own `CLAUDE.md`:
|
|
`projects/ecuador-museum/CLAUDE.md`, `projects/harbor-house/CLAUDE.md`.
|
|
|
|
## Conventions
|
|
|
|
- Reference documents received as PDF are converted to Markdown (or plain
|
|
text, for documents like the academic paper where reflowing into headed
|
|
sections isn't worth the effort) and the PDF is then deleted — keeps
|
|
everything in each project's `ref/` greppable and quotable rather than
|
|
needing repeated page-range PDF reads. Check conversions carefully: PDF
|
|
text extraction can silently mis-join hyphenated compounds and drop
|
|
ligatures/symbols.
|
|
- Each project follows the same internal shape: `ref/` (inputs — pattern
|
|
subset, form language, brief, chassis), `narratives/` (drafting-stage
|
|
stakeholder narratives), `docs/` (public presentation document, images,
|
|
illustration prompts). See each project's `CLAUDE.md` for the specifics
|
|
of what's in each.
|
|
|
|
|
|
<!-- BEGIN BEADS INTEGRATION v:1 profile:minimal hash:7510c1e2 -->
|
|
## Beads Issue Tracker
|
|
|
|
This project uses **bd (beads)** for issue tracking. Run `bd prime` to see full workflow context and commands.
|
|
|
|
### Quick Reference
|
|
|
|
```bash
|
|
bd ready # Find available work
|
|
bd show <id> # View issue details
|
|
bd update <id> --claim # Claim work
|
|
bd close <id> # Complete work
|
|
```
|
|
|
|
### Rules
|
|
|
|
- Use `bd` for ALL task tracking — do NOT use TodoWrite, TaskCreate, or markdown TODO lists
|
|
- Run `bd prime` for detailed command reference and session close protocol
|
|
- Use `bd remember` for persistent knowledge — do NOT use MEMORY.md files
|
|
|
|
**Architecture in one line:** issues live in a local Dolt DB; sync uses `refs/dolt/data` on your git remote; `.beads/issues.jsonl` is a passive export. See https://github.com/gastownhall/beads/blob/main/docs/SYNC_CONCEPTS.md for details and anti-patterns.
|
|
|
|
## Session Completion
|
|
|
|
**When ending a work session**, you MUST complete ALL steps below. Work is NOT complete until `git push` succeeds.
|
|
|
|
**MANDATORY WORKFLOW:**
|
|
|
|
1. **File issues for remaining work** - Create issues for anything that needs follow-up
|
|
2. **Run quality gates** (if code changed) - Tests, linters, builds
|
|
3. **Update issue status** - Close finished work, update in-progress items
|
|
4. **PUSH TO REMOTE** - This is MANDATORY:
|
|
```bash
|
|
git pull --rebase
|
|
git push
|
|
git status # MUST show "up to date with origin"
|
|
```
|
|
5. **Clean up** - Clear stashes, prune remote branches
|
|
6. **Verify** - All changes committed AND pushed
|
|
7. **Hand off** - Provide context for next session
|
|
|
|
**CRITICAL RULES:**
|
|
- Work is NOT complete until `git push` succeeds
|
|
- NEVER stop before pushing - that leaves work stranded locally
|
|
- NEVER say "ready to push when you are" - YOU must push
|
|
- If push fails, resolve and retry until it succeeds
|
|
<!-- END BEADS INTEGRATION -->
|