# Blueprint standard: how a JSLC blueprint is drawn

Status: **PROPOSED, draft for owner review**, v0.2.1, 2026-10-20. US military fill applied. The owner has not issued this standard. Look remains JSLC STD-1.

| File | What it is |
|---|---|
| [`blueprint-standard.json`](blueprint-standard.json) | the machine-readable twin of this page |
| [`GENERATOR-SPEC.md`](GENERATOR-SPEC.md) | how to build the generator |
| [`SKILLS.md`](SKILLS.md) | survey of tools and skills |
| [`example/`](example/) | worked E-2D sheet |

**The look is JSLC DRAWING STANDARD STD-1.** STD-1 is the look of the castdb gate and portal sheets.

> Owner, 2026-10-20 17:10–17:12: "refer to the blueprints i gave you for the gate" / "i like how that looked" / "what you just showed me is not good looking".
>
> Owner, 16:41: "Blueprints should be done programatically and mathematically. Everything is math and everything is designed to be real."

STD-1 sets how a sheet looks. US Navy facility practice and ASME Y14 practice set the maths. ISO is not an authority in this revision.

| Area | Standard | Revision |
|---|---|---|
| Lines and lettering | ASME Y14.2 | 2014 (R2026). Dash table not read. STD-1 geometry kept. |
| Views | ASME Y14.3 | 2012 (R2024). Third-angle. Body paragraph not read. |
| Dimensions | ASME Y14.5 | 2018 (R2024). No geometric tolerances on these sheets. |
| Sheet sizes | ASME Y14.1, publisher revision | 2020 (R2026). Size table not read. Navy FC names the metric sheet ISO A1. ISO is not an authority. DoD adoption of this reaffirmation is unverified. |
| Drawing practice | ASME Y14.100 | 2017 (R2026) |
| Drawing types | ASME Y14.24 | 2020 (R2026). Monodetail text not read. |
| Parts lists | ASME Y14.34 | 2013 (R2024). Body not read. |
| Revisions | ASME Y14.35 | 2025. Letter list not read. |
| Facility sheets, text floor | NAVFAC FC 1-300-09N | 17 May 2024, Change 1, 17 Apr 2025, §12-3.3.4 |

**PROPOSED** marks a rule the owner has not issued. Paywalled body text stays unverified.

ASME dates in the table are publisher revisions. MIL-STD-100G Notice 1 (14 Dec 2001) names ASME Y14.100, Y14.24, Y14.35M, and Y14.34M after it cancels MIL-STD-100G. That notice does not prove DoD adoption of each 2024 or 2026 reaffirmation. DoD adoption of those current editions is unverified.

## 0. Output scope

Draw buildings, gates, doors, tunnels, pens, and yards on the eight Flight 1 maps. Greenland HQ (`jslc-00`, `greenland_naval_bunker`) is first. Diego Garcia (`jslc-05`) is second. The other six maps in that set come after those two. Every map outside the eight is deferred. Aircraft, ship, submarine, vehicle, and infantry sheets are deferred. Their class rules stay in this file for a later job. Cite FILL-SCOPE. Do not emit a deferred class.

| Related topic | Where |
|---|---|
| Unit naming, axes, real dimensions, nodes, joints | [`../standards_units/README.md`](../standards_units/README.md) |
| STD-1 reference sheet | `M:\z4yin-work-overflow\hermes-share\codex-lanes\castdb\canon\facilities\blueprints\camp-century\05-tidewater-caisson-blast-gate-detail.svg` |
| STD-1 definition (code) | `…\castdb\canon\facilities\tools\gen_campcentury_std.py`, class `StdSheet`. It is copied from `gen_node_neptune_portal.py` |
| Ship drafting (frames, decks, compartments) | `D:\z4yin\z4yin-files\skills\blueprinter\SKILL.md` (§12) |

---

## 1. Principles

1. **A blueprint is computed.** Each line is a projection of the source GLB. Each number comes from the GLB, from a node pivot or joint, or from a cited dossier figure. Do not trace or guess.
2. **AI images and hand drawings are not canon.**
3. **The SVG is canon.** The SVG and its audit JSON are the record. The PDF is the colour vector copy. TIFF, PNG, and the sidecar are renditions made from the SVG.
4. **One look for every sheet: STD-1.** Every class uses the same paper, ink, panels, bottom band and title block. A tank sheet and a carrier sheet look like one drawing set.
5. **Line meaning comes from line type and weight.** Navy header bars mark panels. Red marks superseded content and FAIL values only, always with a word. Do not use yellow or amber.
6. **Show the model figure and the real figure.** If they disagree by more than the tolerance, the sheet says WARN or FAIL. The sheet does not hide a model error.

## 2. Coordinate frame

| Item | Value | Source |
|---|---|---|
| Units | metres; 1 model unit = 1 m | unit standard §1 |
| Up | +Y | unit standard §1 |
| Forward (nose, bow, gun) | −Z | unit standard §1; OD-01 |
| Starboard | +X | unit standard §1 |
| Ground | Y = 0 | unit standard §1 |
| Ships | design waterline DWL at Y = 0 | unit standard §1; OD-07 |

**Canonicalisation.** The generator always projects in this frame. If a model faces a different direction, the generator turns it about +Y first. The angle is recorded as `canonYawDeg` in the title block and the SVG.

**Conflict (OD-01).**

- The E-2D lab spec says "+Z points toward the nose, and +X is starboard" (`LAB:OWNER-SPEC.txt` §1).
- That combination is left-handed. In glTF, with +Y up and the nose at +Z, starboard is −X.
- The GLB confirms this. After the 180° turn, the nodes named `*_port` are at +X, which is starboard.
- So the sheet takes port and starboard from geometry, not from names (§8.6).

## 3. Sheets and scale

### 3.1 The STD-1 sheet

STD-1 is drawn on a 2400 × 1600 px canvas. This standard keeps the STD-1 look and puts it on metric sheets in millimetres, landscape. The sizes used are A0 1189×841, A1 841×594, A2 594×420, A3 420×297 and A4 297×210 mm. NAVFAC FC 1-300-09N §12-3.3.4.1 calls the metric facility sheet ISO A1 (594 × 841 mm) and the imperial sheet ANSI D (22 × 34 in). Those are the Navy's words for the physical format. This standard adopts that Navy metric option. ASME Y14.1-2020 (R2026) is the selected size authority. Its size table was not read. ISO 216 is not an authority. The default facility sheet is metric A1, landscape, because the sheet unit is the millimetre. ANSI D is the imperial alternate, not the default. On A1, one STD-1 pixel is about 0.35 mm. Cite OD-B2.

| Part | Rule (values for A1; JSON `std1` has all values) |
|---|---|
| Paper | Pale blueprint paper: a radial gradient from `#f5f9fc` to `#eaf1f8` to `#dce7f2`. The print variant uses flat white |
| Frame | Double frame. The outer line is 1.2 mm navy, 10 mm from the edge. The inner line is 0.45 mm, 2.5 mm inside the outer line |
| Grid zones | **1–12** across the top and bottom, **A–H** down both sides. Mono bold 3.5 mm. Short ticks at the zone boundaries. The 12 × 8 grid is the same on every size |
| Paper grid | Fine dashed lines (`#c8daec`, 0.2 mm, dash 0.7 / 2.1). The pitch is the smallest 1-2-5 metre value p for which p × 1000/N ≥ 30 mm. The lines pass through the view A datum (FS 0 and the ground line). On the E-2D sheet: 5 m = 50 mm |
| Header | Top left: `DWG NO: <id>` (mono 3.5 bold), then `SCALE: 1:N · UNITS: METRES · <size>`. Centre: title (sans 7 bold), subtitle (sans 3.5 bold), and a double rule under them. Top right: `AUTHORITY: <rulings>`, then `SHEET nn OF NN` |
| View panels | Each view, section, detail and pictorial sits in its own panel. A panel has a pale fill, a 0.6 mm navy border and an 8 mm **navy header bar**. The bar has the panel name on the left (white, sans 3.5 bold) and a short note on the right (sans 2.5) |
| Bottom band | 21% of the sheet height, below a 0.75 mm rule. It has four panels, each with a navy header bar: **Bill of Materials & Part Schedule** · **Calculations & Verified Data** · **Legend · Hatch Key · Scale** · **Title block** |
| Human figure | A **1.80 m** STD-1 figure stands on the ground line in every elevation, at sheet scale. It has a head, torso, legs, a height bar and a "HUMAN 1.80 m" label box |
| Fonts | Sans: Arial or Helvetica, for titles, part names and labels. Mono: Courier New, for drawing numbers, values, keys and dimensions |

STD-1 uses equal 10 mm margins, which carry the zone labels. ASME Y14.1 margin numbers were not read. NAVFAC uses its own border. This standard keeps the STD-1 margins. Cite OD-B4.

### 3.2 Scale: a formula, not a choice

Scales stay on the JSLC **1-2-5 × 10ⁿ** ladder. The ASME scale table was not read. Do not cite ISO 5455.

`1:1 · 1:2 · 1:5 · 1:10 · 1:20 · 1:50 · 1:100 · 1:200 · 1:500 · 1:1000 · 1:2000 · 1:5000 · 1:10000`

One metre of model is **1000 / N** mm of paper.

The selection algorithm:

1. Project the model in its sheet pose. This gives the view extents in metres. For the GA sheet: profile length L, profile height H, forward-view width W, plan depth D.
2. Calculate the size of each panel at scale N, with k = 1000/N. A panel is its header bar, plus the view, plus an allowance on each side:
   - 6 mm on a side with no dimensions.
   - 16 + 8(n − 1) mm on a side with n tiers of dimensions.
   - Extra reserves: 28 mm for the human figure, 58 mm for level marks on panel C, and 16 mm for the callout row on panel A.
3. Place the panels in third-angle order (§5). Panel C is to the left of panel A in the same row. Panel B is above panel A in the same column.
4. The drawing area is the inner frame, minus the header and the bottom band.
5. Do this for each sheet size the class allows (§5.8), smallest first. For each sheet, find the smallest N that fits.
6. Take the smallest N found on any allowed sheet. Use the smallest sheet that reaches it.

Adjacent scales differ by ×2.5 or less. So the drawing always fills at least **40%** of the limiting sheet dimension. Views on a sheet share the sheet scale. A view at another scale (a section, a detail) shows its own scale in its panel header.

### 3.3 Pixels per metre: one rule

The current canon has no px/m rule. The castdb facility blueprints (`dimension-audit.json`, 38 sheets) use 26 different `px_per_m` values, from 0.2 to 200. Some scale labels are not standard: 1:31.25, 1:33.3, 1:166, 1:181.8, 1:3333.

From now on:

- **SVG:** user units per metre = **1000 / N**. One SVG unit is one millimetre.
- **Raster:** px per metre = **(DPI / 25.4) × (1000 / N)**. Cite FILL-RESOLUTION.

| Copy | File | DPI | Notes |
|---|---|---|---|
| Master | SVG and PDF | vector | 1 SVG unit = 1 mm. Sheet size on the file. |
| Archive | TIFF, ITU-T T.6 Group 4 | 200 | Bi-level. JSLC adoption of MIL-PRF-28002C §3.1.4. Inactive for new design (Notice 1, 22 Apr 2010). Not a current new-design mandate. This TIFF does not satisfy the NAVFAC plotted-PDF rule. |
| Modelling backdrop | PNG, lossless, pHYs set | 300 | Colour STD-1. px/m uses this DPI and the sheet scale. |
| Screen preview | PNG, lossless, pHYs set | 150 | JSLC preview. Not a 28002 class. |
| Thumbnail | PNG | long edge 512 px | Not a scale master. |

| Copy | px/m at 1:100 | px/m at 1:200 | px/m at 1:1000 |
|---|---|---|---|
| 150 ppi preview | 59.055 | 29.528 | 5.906 |
| 200 ppi archive | 78.740 | 39.370 | 7.874 |
| 300 ppi model PNG | 118.110 | 59.055 | 11.811 |

Landscape pixel sizes use `round(mm / 25.4 × DPI)`. The full table is in the JSON at `scale.resolution.pixelsLandscape` and in DECISIONS-FILLED.md under FILL-RESOLUTION. A1 at 200 ppi is 6622 × 4677. A1 at 300 ppi is 9933 × 7016. A1 at 150 ppi is 4967 × 3508. ANSI D at 200 ppi is 6800 × 4400, which matches MIL-PRF-28002C Table I size D. Metric 28002 table counts differ by a few pels. The sidecar records both. Every raster carries scale, DPI, and px/m in the title block and in a sidecar JSON. PNG pHYs pixels per metre equal DPI / 0.0254. A detail sheet uses its own scale. The 200 ppi and 300 ppi densities are a JSLC adoption of an inactive specification. They are not a current new-design mandate. FC 1-300-09N §12-3.3.4.2 requires a monochrome plotted PDF or hardcopy unless a color plot is requested. The owner requested the STD-1 colour look, so the SVG and the PDF stay in colour. This standard does not define a monochrome PDF. The Group 4 TIFF does not satisfy that plotted-PDF rule.

## 4. Projection method

**Third-angle projection (ASME Y14.3-2012 (R2024)). Put the symbol in every title block.** Cite OD-B1.

The Y14.3 body paragraph was not read. The historical DoD rule is the witness: DOD-STD-100D tells a decimal-inch drawing to state the angle when it is not third-angle. MIL-STD-100G offers third-angle or first-angle under ASME Y14.3M. This standard selects third-angle.

### 4.1 Placement rule

A view sits on the same side of the principal view as the direction from which it is seen.

- Plan (from above) sits above the principal view.
- The view from below sits under the principal view.
- The forward end view sits on the forward side of the principal view.
- The aft end view sits on the aft side.
- The opposite profile sits outboard of the aft end view.

Ship lines-plan order is not taken from a NAVSEA page. No such page was found. A handbook calls one lines figure first-angle. Ship sheets are deferred. Facility sheets use the rule above.

## 5. Views

### 5.1 Catalogue

View A is the principal view. For a facility, A is the elevation of the operational face. Forward points to the **left** of the sheet, and +Y is up. Ships are OD-B3 and are deferred: a later ship sheet uses bow-right. Cite FILL-VIEWS.

| Letter | Code | Name | Viewer at | Third-angle position |
|---|---|---|---|---|
| A | PP | Principal elevation | −X | principal |
| B | PL | Plan | +Y (above) | above A |
| C | FW | From forward | −Z | left of A |
| D | AF | From aft | +Z | right of A |
| E | BL | From below | −Y | below A |
| F | SP | Opposite elevation | +X | right of D |

### 5.2 Why these positions

In third-angle, a view goes on the **same** side as the side it is looked at from. Looking from forward (the left of A), view C goes to the left of A. Looking from above, view B goes above A. The generator calculates placement from the vectors in §5.3, and check V6 confirms it.

### 5.3 View matrices

Three unit vectors define a view:

- **v** points from the object to the viewer;
- **r** points to the right of the screen;
- **u** points up the screen;
- with **r × u = v**.

A point p projects to (s, t) = (p·r, p·u), in metres. On paper:

- x_mm = x₀ + (s − s_min) × 1000/N
- y_mm = y₀ + (t_max − t) × 1000/N

| View | v | r | u | What you see |
|---|---|---|---|---|
| A | (−1, 0, 0) | (0, 0, 1) | (0, 1, 0) | nose left, top up |
| B | (0, 1, 0) | (0, 0, 1) | (1, 0, 0) | nose left, starboard toward A |
| C | (0, 0, −1) | (−1, 0, 0) | (0, 1, 0) | port on the right |
| D | (0, 0, 1) | (1, 0, 0) | (0, 1, 0) | starboard on the right |
| E | (0, −1, 0) | (0, 0, 1) | (−1, 0, 0) | nose left, starboard toward A |
| F | (1, 0, 0) | (0, 0, −1) | (0, 1, 0) | nose right |

The example script checks r × u = v when it runs.

### 5.4 Pictorial views

| Code | Name | Direction v |
|---|---|---|
| ISO-FPA | Isometric from forward-port-above | (−1, 1, −1)/√3 |
| ISO-ASA | Isometric from aft-starboard-above | (1, 1, 1)/√3 |

- Both are isometric pictorials under ASME Y14.3. Each axis is shortened by √(2/3) = 0.8165. The Y14.3 pictorial paragraph was not read. The factor is the geometric isometric scale. Codes ISO-FPA and ISO-ASA keep their names as generator tokens.
- Pictorial views have no dimensions. The panel bar says "PICTORIAL · NOT TO BE SCALED".

### 5.5 Sections

A section is the model cut by a plane. Cut faces are **hatched by material** (§7.3). The cutting plane on the parent view is shown as follows:

- a 04.1 line, with 04.2 ends;
- arrows;
- an STD-1 section marker (a circle with the letter).

The section panel bar names the station and the scale, for example "FS 3.58 m · SCALE 1:50".

| Code | Plane | Viewed as |
|---|---|---|
| SEC-L | X = 0 | A |
| SEC-T@station | Z = z | C |
| SEC-H@level | Y = y (deck and floor plans) | B |
| SEC-W@fraction | X = fraction × semispan | A |

Floor plans of structures cut 1.50 m above the floor. No Navy figure for this height was found. The height is a JSLC rule. Cite PROPOSED-FLOOR-CUT.

### 5.6 Details

A detail callout enlarges a circled region of a parent view. The scale is the next ladder value that fills the detail panel. Find numbers stay the same as on the parent view.

### 5.6.1 Detail sheets

Every facility part that is modelled or generated on its own gets a detail treatment. Cite FILL-DETAIL and ASME Y14.24-2020 (R2026). The monodetail paragraph in Y14.24 was not read. MIL-STD-100D 201.2.1 says a monodetail drawing delineates one part. 201.2.2 says each part on a multidetail drawing still meets the detail requirements. That DoD text is superseded. It is the public definition of the words.

- A part with its own pivot, joint limit, or swept clearance gets a monodetail drawing.
- A large separate part (gate leaf, door, tunnel segment, pen gate) gets a monodetail drawing even when it does not move.
- Small fixed parts may share one multidetail sheet. Each part on it still has its own views, its own scale, local-frame dimensions, node name, and find number. A moving part does not share a sheet.
- If the parts do not fit at those scales on one Y14.1 sheet, split them.
- Each detail sheet shows views at its own scale, the pivot and axis when it moves, joint limits, swept clearance, the node name, local-frame dimensions, and the find number from the arrangement parts list.
- Monodetail number: the parent number plus `-D` and a three-digit find number. Example: `JCOM-NSD-GHQ-001-D003`.
- Multidetail number: the parent number. No new root. Sheet count is `SHEET nn OF NN` inside that number.
- The CAGE stand-in and the revision letter are not part of the number.

### 5.7 States (articulation)

A state view is a normal view of a named pose. The reference configuration shows under it in phantom (05.1). ASME Y14.2 phantom lines show alternate and extreme positions. The Y14.2 dash table was not read. The current phantom geometry stays.

Poses come from the GLB's own clips, using the clip mapping in the unit standard (for the E-2D, `OWNER-SPEC.txt` §7).

| Class | Reference configuration |
|---|---|
| Aircraft | wings spread, gear down, controls neutral, rotors at reference azimuth, hook up |
| Land vehicle | turret 0°, gun 0°, wheels straight |
| Ship | masts up, at DWL |
| Structure | doors closed |
| Infantry | standing |

### 5.8 Views per class: exact counts

O = orthographic, P = pictorial, S = section, D = detail, ST = state view.

| Class (game classes) | O | P | S | D | ST | **Total** | Sheets | Sizes |
|---|---|---|---|---|---|---|---|---|
| Land vehicle, turreted (tank, ifv) | 6 | 2 | 2 (SEC-L, SEC-T turret ring) | 2 | 2 (traverse B, elevation A) | **14** | 4 | A2, A1 |
| Land vehicle, no turret (wheeled, truck) | 6 | 2 | 2 | 2 | 1 (steering B) | **13** | 4 | A2, A1 |
| Artillery | 6 | 2 | 2 | 2 | 4 | **16** | 5 | A2, A1 |
| Rotary-wing (helicopter) | 6 | 2 | 2 (SEC-L, SEC-T main mast) | 2 | 0; +2 if blades fold, +1 if ramp | **12** (to 15) | 3–4 | A2, A1 |
| Fixed-wing (jet) | 6 | 2 | 3 (SEC-L, SEC-T max fuselage, SEC-W 40%) | 2 | 4 (gear up A, C, E; controls B) | **17** | 5 | A2, A1 |
| Carrier aircraft | 6 | 2 | 3 | 2 | 9 (jet's 4, folded A, B, C, ISO-FPA, hook A) | **22** | 6 | A2, A1 |
| Ship (surface) | 6 | 1 | lines plan 3 + SEC-L + 2 SEC-T + n deck plans | 2 | 0 | **15 + n** (min 16) | 5+ | A1, A0 |
| Submarine | 6 | 1 | lines plan 3 + SEC-L + 2 SEC-T | 2 | 1 (masts A) | **16** | 5 | A1, A0 |
| Structure (building, defence) | 5 (no E) | 1 | SEC-L, SEC-T + n floor plans | 1 | 1 (door A; defence +1) | **10 + n** (min 11; defence 12) | 3–4 | A2, A1, A0 |
| Infantry | 5 (no E) | 1 | 0 | 1 (weapon) | 2 (aim A, prone A) | **9** | 2 | A3, A2 |

**Why these counts:**

- **Six orthographic views for vehicles, aircraft and ships.** The game shows units from every side. View E (from below) shows gear wells, bays, tracks and hull bottoms. Structures and infantry have no useful underside, so they drop view E. A structure gets a floor plan in its place.
- **Two isometrics** together show every face once. Ships and structures need only one.
- **Sections only where the inside matters in play.**
- **States only where the outline changes in play:** gear up, wing fold, deployment, turret limits.

**Sheet sets:**

| Sheet | Contents |
|---|---|
| 01 GA | A, B, C, ISO-FPA, a section, principal dimensions, callouts |
| 02 View sheet | D, E, F, ISO-ASA |
| 03 | sections |
| 04 | details |
| 05+ | states |
| Ships | the lines plan and deck plans take sheets 03 onward |

## 6. Title block and bottom band (STD-1)

The bottom band has four panels in this order.

**1. Bill of Materials & Part Schedule.** Columns: FIND · PART / SUBASSEMBLY · NODE · SIZE L × W × H (m) · QTY · MASS t · PIN.

- There is one row per callout. FIND is the circled find number, the same as on the views and on the detail sheet. Cite FILL-PARTS and MIL-STD-100G 405. PIN is "—" until a dossier gives one. The find number is not a procurement number.
- PART is plain English, upper case. NODE is the exact contract node name.
- SIZE comes from the part's GLB extents (one side).
- MATERIAL and MASS come from the dossier. If there is no dossier, write "—" and say so in the panel footer.

**2. Calculations & Verified Data.** One line per value: a label (sans 2.5 bold) and a value (mono 2.5). The generator calculates every value. Model and reference figures carry a deviation in %, with WARN or FAIL. FAIL values are red. Typical lines:

- principal dimensions against reference figures;
- folded and other state sizes;
- pivot distances;
- the scale-selection result;
- mm per metre and px per metre;
- model counts;
- source SHA-256;
- frame.

**3. Legend · Hatch Key · Scale.** It holds:

- the hatch key (only the materials used in the set, §7.3);
- the line-type key;
- the paper-grid pitch;
- the STD-1 **graphic scale**: four bands, alternately filled and blank, labelled 0 … bar length in metres.

**4. Title block.** It follows the STD-1 structure. ASME Y14.100 is the drawing-practice authority. The ISO 7200 field list is withdrawn.

| Row | Content |
|---|---|
| 1 | `JSLC · <directorate> · <site or wing>` (sans 3.5 bold); `DWG NO <id> · UNITS: METRES · REV <r>` (mono 2.5) |
| 2 | TITLE; subtitle; `STATUS: ISSUED TO JSLC DRAWING STANDARD STD-1` (or PROPOSED, MOCK, SUPERSEDED) |
| 3, left | SCALE (with sheet size and projection) · RULINGS · HUMAN REF 1.80 m ON ELEVATION · STANDARD `JSLC STD-1 · ASME Y14.1/Y14.2/Y14.3` |
| 3, right | DRAWN (agent code) · CHECKED · third-angle symbol · `CAGE EQUIV: JSLC0` |
| 4, left | "SUPERSEDED CONTENT IS MARKED ON SHEET IN RED"; SOURCE model; SHA-256; FRAME (yaw, axes); `JCOM / TECHNICAL REVIEW / CONTROLLED COPY`; distribution `JSLC-DIST-INT` |
| 4, right | **SHEET NO.** with the number in sans 14 bold; "OF NN" |

Field values:

- **Identification number:** `JCOM-<directorate>-<type>-<NNN>`, with ASCII hyphens. Example shape `JCOM-NSD-E2D-001`. Facility example `JCOM-NSD-GHQ-001`. Cite FILL-DWGNO. This is the one JSLC grammar. NAVFAC job numbers are not adopted.
- **CAGE equivalent:** `JSLC0`. Five characters, fictional, not a DLA-registered code. It is not part of the drawing number. Cite FILL-CAGE and MIL-STD-100G 3.11 and 406.5.
- **Distribution:** `JSLC-DIST-INT` by default. Also `JSLC-DIST-OWNER` and `JSLC-DIST-PUB`. These are fictional labels. Do not print a DoDI 5230.24 statement. Cite FILL-DIST.
- **Revision letters:** A onward. Do not use I, O, Q, S, X or Z. That skip list is the v0.2.0 rule. The ASME Y14.35-2025 letter list was not read.
- **Approval:** only the owner moves a sheet to ISSUED.

The full field list, with patterns, is in the JSON at `titleBlock.fields`.

**Revisions.** The revision letter stays on title-block row 1. A revision block sits inside the title-block panel. Columns: REV, DESCRIPTION, DATE, BY. The four band panels stay. The calculations panel does not carry the history. The full history stays in the generator sheet-history file. Cite PROPOSED-REV-PLACEMENT and ASME Y14.35-2025. The 2025 body text was not read.

## 7. Lines, colour and hatching

### 7.1 Line types (ASME Y14.2-2014 (R2026)) and STD-1 weights

Y14.2 is the line-class authority. Its dash table was not read. Widths and dash lengths below stay the STD-1 geometry. Tokens 01.1, 01.2, 02.1, 04.1, 04.2 and 05.1 are generator names for visible-thin, visible-thick, hidden, center, cutting-plane ends, and phantom. Cite FILL-LINES.

| Line group | Thick | Thin | Sheets |
|---|---|---|---|
| 0.5 | 0.50 mm | 0.25 mm | A3, A2 |
| 0.7 | 0.70 mm | 0.35 mm | A1, A0 |

| Type | Form | Used for |
|---|---|---|
| 01.2 | continuous, thick | visible silhouette and crease edges; section outlines |
| 01.1 | continuous, thin | dimension and extension lines, leaders, hatching, GL and DWL |
| 02.1 | dashed, thin (12d dash, 3d gap) | hidden edges, only where §8.3 allows |
| 04.1 | long-dash dot, thin | centre lines, symmetry, cutting planes |
| 04.2 | long-dash dot, thick | cutting-plane ends |
| 05.1 | long-dash double-dot, thin | phantom: alternate positions, folded envelopes, reference pose |

In the table, d is the line width. Dash lengths are in millimetres on paper.

### 7.2 Colour: STD-1 is the default

All values below come from `gen_campcentury_std.py`. Contrast is measured on the darkest paper stop, `#dce7f2`.

| Role | Hex | Contrast |
|---|---|---|
| Ink: outlines, frame, text | `#0b3c6d` | 8.91:1 |
| Titles, dimensions | `#0d4175` | 8.25:1 |
| Secondary text, zone labels, centre lines | `#1b5994` | 5.77:1 |
| Data values | `#144d82` | 6.94:1 |
| Header bars | `#0b3c6d`, with text `#f4f8fb` (10.45:1) and notes `#cfe2f2` (8.41:1) | |
| Panel fill | `#eef4fa` (views), `#e6eef7` (band) | |
| Table head; table rows | `#d3e2f2`; `#edf4fb` / `#e2ecf7` | |
| Table rules | `#6b9fd1`, `#adc8e3` | |
| Label boxes | `#ecf2f8` | |
| Surface tint inside outlines | `#dbe7f3` (JSLC look; PROPOSED-SURFACE-TINT) | |
| Paper grid | `#c8daec` | |
| Superseded and FAIL only | `#c81e1e` (4.58:1), on `#fdeaea` | |

| Variant | Use |
|---|---|
| **std1** (default) | Gradient paper as above. Screen, gallery, canon |
| **print** | The same as std1 with flat white paper. For PDF and paper |
| **graphite** | Light lines on the dark site background (`#0b1324`, from `shell-tokens.css`). Only for embedding in the site; never canon |

**Dropped:** the v0.1.0 solid cobalt field (`#002eac`). The owner judged it "not good looking" (17:12).

**Also superseded:**

| Colour | Where it was used |
|---|---|
| `#0B3D91` | `skills/blueprinter` field |
| `#FFE082` | `skills/blueprinter` callouts (yellow) |
| `#8a5a00` | pre-STD-1 castdb dimensions (amber) |

### 7.3 Hatch patterns by material

A hatch means a **cut face**: sections, deck plans, cut-away details. Elevations, plans and pictorials use the flat surface tint, not a hatch. ASME Y14.2 is the line authority. Its hatch figure was not read.

The STD-1 patterns for concrete, steel, ice, rock, and water are the facility policy. The five unit patterns stay PROPOSED and deferred. This fill does not approve them. Cite OD-B8. The pattern geometry is in the JSON at `hatches.patterns`.

| Material | Pattern | Source |
|---|---|---|
| Steel (gear, hook, fittings) | 45°, one heavy and one light line, ground `#c7daec` | STD-1 |
| Reinforced concrete | diagonal lines plus aggregate dots, ground `#d6e4f2` | STD-1 |
| Glacial firn and ice | −25°, solid and dashed lines | STD-1 |
| Bedrock | 35°, heavy lines with dashed cross lines | STD-1 |
| Seawater | short offset horizontal strokes | STD-1 |
| Airframe skin and structure | 45°, single light lines, ground `#dbe7f3` | PROPOSED |
| Armour plate | 45°, close double heavy lines | PROPOSED |
| Composite and radome | −45°, solid and dashed lines | PROPOSED |
| Transparent (canopy, windows) | short paired strokes on a very pale ground | PROPOSED |
| Rubber (tyres, seals) | crossed lines | PROPOSED |

The materials for each class are in the JSON at `hatches.byClass`. The material of each part comes from the dossier. Until a dossier says otherwise, a mock sheet uses "airframe" for a generic airframe cut.

## 8. Lettering, dimensions and marks

### 8.1 Lettering

- **Fonts:** sans (Arial or Helvetica) and mono (Courier New), as in STD-1. All lettering is upper case, except node names, file names and hashes.
- **Heights** use the STD-1 series, with the 1.8 mm step withdrawn. NAVFAC FC 1-300-09N §12-3.3.4.3 requires 2.4 mm minimum and prefers 3 mm for dimensions, notes, and callouts. View titles are at least 5 mm. Arial is the NAVFAC font at or below 6 mm. This standard uses Arial or Helvetica for words. Courier New stays for numbers. That mono column is a recorded look exception. Body text uses a **2.5 mm** floor, which clears the 2.4 mm rule. Cite FILL-LETTERING. The Y14.2 height table was not read.

| Item | A0–A1 | A2–A4 |
|---|---|---|
| Title | 7 | 5 |
| Subtitle | 3.5 | 2.5 |
| DWG NO | 3.5 | 3.5 |
| Panel and band bars | 3.5 | 2.5 |
| Dimensions | 3.5 | 2.5 |
| Callouts | 3.5 | 2.5 |
| Table text | 3 | 2.5 |
| Data and small text | 2.5 | 2.5 |
| Zone labels | 3.5 | 2.5 |
| Sheet number | 14 | 10 |

- **Body minimum:** 2.5 mm. The sheet title is 7 mm on A0–A1 and 5 mm on A2–A4, so the sheet title meets the 5 mm Navy view-title floor. The panel-view header stays 3.5 mm on A0–A1 and 2.5 mm on A2–A4, inside the 8 mm navy bar. Both are below 5 mm. That is a recorded owner-look exception. It does not meet §12-3.3.4.3 for view titles.

### 8.2 Dimensions

**Units:** metres, two decimals, decimal point. For example `18.16 m`.

**STD-1 dimension style:**

- A thin dimension line with closed filled arrowheads, 3 mm long and 1.2 mm half-width.
- Extension lines at 75% opacity. They start 1 mm off the outline and run 2 mm beyond the dimension line.
- The value sits in a **boxed label centred on the line**: mono 3.5 bold, box fill `#ecf2f8`, 5.4 mm high.
- The first tier is 10 mm out from the outline. Each further tier is 8 mm beyond the one before.

ASME Y14.5-2018 (R2024) is the dimensioning authority. Its text-placement paragraph was not read. The publisher says architectural practice is outside Y14.5. These sheets still show linear sizes. STD-1 puts the value in a box on the line. This standard keeps that box, for the look. Do not use geometric tolerances. Cite FILL-DIMS.

**Reference figures:**

- A real-world figure follows in parentheses, for example `18.16 m (17.60)`.
- Add `WARN` above 2% deviation and `FAIL` above 5% (unit standard).

**Required dimensions per class:**

| Class | Required dimensions |
|---|---|
| All | length, width, height |
| Aircraft | span; wheelbase and track measured between gear pivots; folded width and height (carrier); rotor diameter |
| Land vehicles | track width, wheelbase, turret-ring station, gun-axis height |
| Ships | LOA, beam, draft, air draft, flight deck |
| Structures | footprint, height, door opening |
| Infantry | height |

**Traceability:** each dimension element carries `data-dim-m`, `data-span-mm` and `data-source`.

**Tolerances:** do not use geometric tolerances. These are not manufacturing drawings. The model-against-real deviation is the one tolerance that matters.

### 8.3 Edges and hidden lines

- **Visible edges:**
  - silhouette edges;
  - boundary edges;
  - crease edges at **18°** or more (the lab threshold, `LAB` §4).
- **Weld vertices** within 1×10⁻⁵ m before you find creases.
- **Hidden edges are off** on GA and view sheets.
- **Hidden edges are on** for state sheets (gear in its wells), details, and listed sections.
- **Merge** any segment shorter than 0.1 mm on paper into its neighbour.

### 8.4 Callouts, pivots and part names

- **Callout:** a filled dot on the part, a thin leader, and a circle of radius 3 mm with the number. This is the STD-1 balloon. The site's no-circled-glyph rule applies to site chrome, not to drawings.
- **Placement:** on panel A, callouts sit in a 16 mm row above the view.
- **Numbering:** the number is the BOM TAG. Numbers run in node order, front to back.
- **Joint limits:** drawn in phantom on the state sheet, with angular dimensions to 0.1°.

### 8.5 Datums and marks

| Mark | Rule |
|---|---|
| Ground line `GL` | Y = 0, thin, on A, C, D, F |
| Ships: `DWL` and `BL` | DWL and BL; frame stations every 10 frames |
| Centreline `℄` | 04.1 on B, C, D, E |
| Forward arrow | `FWD (−Z)` on A and B |
| Level marks (STD-1) | On an elevation: a tick and slash, then `+h.hh m · NAME` in mono 2.5. Example: `+6.31 m · ROTODOME TOP` |
| Human figure | 1.80 m, on GL, in every elevation |
| Section marker | Circle with the letter at the cutting plane |
| Centroid | Quartered circle. Labelled `MASS CG (DOSSIER)` only from a dossier; otherwise `GEOMETRIC CENTROID — UNIFORM DENSITY` |
| Stations | Aircraft: FS = metres aft of the nose tip, BL = X, WL = Y |
| Axis triad | Optional on STD-1 GA sheets. Required on view sheet 02 |

### 8.6 Port and starboard come from geometry

The sign of X in the canonical frame decides port or starboard (+X = starboard). Names do not decide it. The audit lists each node whose name disagrees with its position.

## 9. Mathematical generation (summary)

GENERATOR-SPEC.md has the full detail. In outline:

1. Hash the GLB.
2. Evaluate the pose with glTF semantics, then apply the canonical turn.
3. Measure extents from transformed vertices, and read pivots.
4. Project with the §5.3 matrices.
5. Find edges by type.
6. Remove hidden lines exactly, in object space.
7. Cut sections with a plane and chain the loops.
8. Choose the scale by §3.2 and place the panels.
9. Place dimensions, the human figure, level marks and callouts.
10. Fill the BOM, calculations and legend from the data.
11. Write the SVG and the audit JSON.

Two read-only scripts in this folder reproduce the maths:

- `tools/measure-glb.mjs` measures exact extents for each pose.
- `example/make-e2d-std1.mjs` builds the STD-1 sheet.

## 10. Validation: what a checker verifies

| # | Check | Pass rule |
|---|---|---|
| V1 | Source hash | sha256 of the GLB = title block = SVG metadata |
| V2 | Scale bar | drawn length − (metres × 1000/N) ≤ 0.01 mm |
| V3 | Dimensions | each `data-dim-m` is within 0.001 m of the GLB; drawn span = value × 1000/N, within 0.01 mm |
| V4 | Reference deviation | WARN or FAIL is present exactly above 2% or 5% |
| V5 | Required views | every view for the class is present |
| V6 | Third-angle alignment | B is above A; C is left of A; panels A and C share the ground line; panels A and B share the long axis, within 0.01 mm; r × u = v |
| V7 | Title block | every required field is filled and valid; projection symbol present |
| V8 | Lines | only the Y14.2 classes named in §7.1; widths from the line group |
| V9 | Colour | only std1 hexes (or the variant's); text ≥ 4.5:1 and lines ≥ 3:1 on `#dce7f2`; red only with a word |
| V10 | Lettering | heights from the series, ≥ 2.5 mm; no text overlaps |
| V11 | Hidden-line cross-check | IoU ≥ 0.98 against an independent Blender Freestyle render |
| V12 | Bounding-box cross-check | equal to `tools/measure-glb.mjs` within 0.0001 m |
| V13 | Side labels | port and starboard follow geometry |
| V14 | Determinism | two runs give byte-identical SVG and JSON |
| V15 | STD-1 look | header layout; zones 12 × 8; four band panels in order; every view in a barred panel; a 1.80 m human on every elevation |

## 11. Worked example: E-2D Hawkeye, sheet 01 (STD-1)

This example was drawn under v0.2.0. This fill does not redraw it. The `example/` folder is not in this lane snapshot. Treat the sheet as a historical record. Aircraft sheets are deferred.

**Files in [`example/`](example/):**

| File | What it is |
|---|---|
| `e2d-sheet01-ga.std1.svg` | the sheet |
| `e2d-sheet01-ga.std1.png` | 96 DPI preview |
| `e2d-sheet01-ga.std1.audit.json` | the audit |
| `e2d-measure.json` | extents and pivots per pose |
| `make-e2d-std1.mjs` | the script that makes the sheet |

**Source:** `e2d-hawkeye-fully-articulated.glb`, SHA-256 `e6d07e15…52b1ad` (matches `LAB` §1). It has 65 meshes, 105,359 triangles and 9 clips. The model nose is at +Z, so `canonYawDeg = 180`.

**Measured** (wings spread, gear down):

| Quantity | Model | Real | Deviation |
|---|---|---|---|
| Length | 18.163 m | 17.596 m (NAVAIR) | +3.23% **WARN** |
| Span | 24.570 m | 24.562 m (NAVAIR) | +0.03% |
| Height | 6.314 m | 5.58 m (E-2C figure, unverified for E-2D) | +13.16% **FAIL** |
| Folded width | 10.424 m | not found | — |
| Lowest point, gear up | Y = 0.883 m | — | — |
| Wheelbase / track (pivots) | 7.360 / 6.621 m | — | — |
| Section X–X at FS 3.58 m | 2.12 m wide × 2.16 m deep | — | — |

**Scale selection** (STD-1 layout):

| Sheet | Scale | Panels need | Area available | Result |
|---|---|---|---|---|
| A2 | 1:100 | 544 × 385.5 mm | 562 × 279 mm | does not fit |
| A2 | 1:200 | 330 × 231 mm | 562 × 279 mm | fits |
| A1 | 1:100 | 544 × 385.5 mm | 809 × 416 mm | fits |

Result: **A1 at 1:100**. That gives 10 mm per metre and 59.055 px/m at 150 DPI. The paper grid is 5 m (50 mm). All 10 drawn lengths re-check to 0.000 m.

**Sheet 01 layout:**

| Panel | Contents |
|---|---|
| A — port profile | callouts 1–6, wheelbase, length, height, human |
| C — from forward | span, track, level marks, human |
| B — plan | spread and folded widths, folded envelope in phantom |
| D — isometric | |
| Section X–X | 1:50, airframe hatch |
| Bottom band | the BOM with 7 rows, the calculations, the legend and the title block |

**Mock limits:**

- The outlines are raster silhouettes at 0.025 m. They include holes, such as the gap between the gear legs. The generator will draw exact silhouette and crease edges with hidden-line removal.
- The section hatch fills the envelope of the exact plane cut.

**What the example shows:**

1. The model is 13% taller than the E-2C figure and 3.2% long.
2. The model's side names are mirrored.
3. The lab spec's axis note is left-handed.

## 12. Existing material

| Material | Verdict |
|---|---|
| castdb STD-1 sheets and generator (`gen_campcentury_std.py`, `gen_node_neptune_portal.py`) | **Adopt the look.** This standard makes STD-1 the default and adds the maths: the scale ladder, the px/m rule, projection matrices, views per class, and the checker |
| castdb pre-STD-1 sheets (`*.pre-std1`) and the 26 different px/m values | Superseded. Redraw them to this standard over time |
| `skills/blueprinter` (ship content, `slice_glb.py`, `gate.mjs`) | **Adapt.** Keep the naval content and the slicer. Replace its cobalt/yellow look with STD-1 |
| Unit standard | Upstream source for axes, dimensions, nodes and clips |

## 13. Open decisions for the owner

| # | Decision | Recommended |
|---|---|---|
| OD-B1 | First-angle or third-angle | Third-angle. Symbol in every title block. |
| OD-B2 | Grow to A1, or lock every sheet to A2 | Metric A1 default. A0 and A2 remain available to the scale rule. |
| OD-B3 | Nose-left for every class, or bow-right for ships | Facilities: operational face, forward left. Ships, if later drawn: bow-right. Ship sheets are deferred. |
| OD-B4 | Equal 10 mm margins or a wide filing margin | STD-1 10 mm margins. |
| OD-B5 | Hidden lines off on GA sheets | Off on arrangement sheets. On for details, states, and listed sections. |
| OD-B6 | Lab accent `#bda77b` | Lab only. Never on a sheet. |
| OD-B7 | E-2D model disagrees with the cited figures | Record WARN or FAIL on the sheet. Aircraft sheets are deferred. |
| OD-B8 | Unit hatches | Facility sheets use STD-1 hatches. The five unit patterns stay PROPOSED and deferred. |
| OD-B9 | Comparison sheets | Deferred. Do not generate them for Flight 1. |

## 14. Sources

Normative sources are the Navy and US military documents and the ASME Y14 revisions named in §0 and §4. Paywalled ASME body text is unverified. ISO is not an authority. The citation table for this fill is MILSTD-SOURCES.md in the milstd lane. Do not copy that path into a sheet.
- **STD-1:**
  - `M:\z4yin-work-overflow\hermes-share\codex-lanes\castdb\canon\facilities\tools\gen_campcentury_std.py`
  - `…\blueprints\camp-century\05-tidewater-caisson-blast-gate-detail.svg`
  - `…\blueprints\node-neptune-carrier-portal\04-door-leaf-front-elevation.png`
  - `…\blueprints\INDEX.md`
  - `…\blueprints\dimension-audit.json`
- **NAVAIR E-2D:** https://www.navair.navy.mil/product/E-2D (57 ft 8.75 in; 80 ft 7 in). Read through search results, because a direct fetch was reset.
- **aerospaceweb.org E-2:** https://aerospaceweb.org/aircraft/recon/e2 (E-2C height 18.31 ft).
- **Estate:**
  - `cic/topology/shell-tokens.css`
  - `skills/blueprinter/SKILL.md`
  - `../standards_units/`
  - `D:\z4yin\.inbox\dolphin4\lanes\wireframe-lab\input\OWNER-SPEC.txt`
  - `D:\z4yin\.inbox\dolphin4\lanes\design-repo\TOOLS-SV3-SV4.md`
