Skyhawk Site Modernization Roadmap
READ THIS FIRST: AI / Maintainer Continuity Brief
This page is the authoritative working roadmap for the remaining Skyhawk.org modernization. Any AI assistant, developer, administrator, or future maintainer should read this section, the Current Working Phase, and the Decision Log before proposing or applying changes.
Current Technical State
- Active public theme: Bootstrap Barrio.
- Abandoned theme:
skyhawk_barriohas been retired from the live web tree and Drupal configuration. Do not recreate or re-enable it. - Canonical Skyhawk global CSS:
web/modules/custom/skyhawk_site_fixes/css/skyhawk-global.css. - Reusable squadron CSS:
web/modules/custom/skyhawk_site_fixes/css/squadron.css. Modern squadron layout uses parent-relative widths rather than viewport-relative container widths. - Legacy compatibility CSS:
web/modules/custom/skyhawk_site_fixes/css/legacy.css. - Content architecture data:
web/modules/custom/skyhawk_site_fixes/data/content-architecture.php. - Custom Skyhawk code belongs under:
web/modules/custom/skyhawk_site_fixes, not inside contributed themes. - Site-wide census: complete. It scanned 46,995 Drupal nodes.
- Legacy layout-dependent nodes: 48.
- Modernization candidates: 216.
- Legacy compatibility population: 264 nodes until individual candidates are modernized.
- VMA-131 preview: node 49417. It is the first implementation of the reusable modern squadron-page architecture.
- Published historical VMA-131 / VMA-132 record: node 147. Preserve it until the modernization workflow explicitly replaces or incorporates it.
Operating Rules
- Do not duplicate an existing solution. Search this roadmap, the Decision Log, the existing custom module, Drupal configuration, and current files before creating anything new.
- Do not put Skyhawk custom code inside contributed Drupal projects. Contrib updates must remain free to replace their own files.
- Do not create another global stylesheet. Global site behavior belongs in
skyhawk-global.css. - Do not turn page-specific exceptions into global rules. Determine whether a problem is global, legacy compatibility, or part of a reusable modern page family.
- Legacy content is preserved unless there is a practical reason to modernize it. Old HTML is not automatically a defect.
- Modernization is gradual. VMA-131 is the first squadron prototype. Lessons learned there should become reusable squadron structures rather than one-node hacks.
- Prefer native Drupal structures. Fields, taxonomy, Views, Webform, revisions, permissions, and configuration are preferred over new custom modules when native Drupal can accomplish the task cleanly.
- Use the existing
skyhawk_site_fixesmodule for genuinely site-specific integration. Do not create additional custom modules merely to isolate small fixes. - Back up before mutation and verify afterward. Preserve a recoverable copy of affected content/configuration/code.
- Make one meaningful controlled change at a time. A single change may be broad, but its result should be verified before the next structural change.
- Update this roadmap after significant architectural decisions. Future work should not depend on reconstructing previous conversations.
Current Direction
The immediate architectural work is separating genuinely global CSS from legacy compatibility behavior. Once the global baseline is stable, VMA-131 will be completed as the first reusable squadron-page model. That model will then guide gradual modernization of other squadron/unit pages.
Do not begin by redesigning random pages. Follow the modernization classes and reusable page families recorded below.
Purpose: This is the living plan for completing the modernization of Skyhawk.org while preserving the historical content that has accumulated over decades.
The site is approaching content maturity. The principal remaining work is no longer creating large amounts of new historical content. It is bringing the presentation, navigation, contribution workflows, privacy controls, and content management structure into a form that can be maintained reliably for years without constant reconstruction.
North Star
Modernize incrementally. Design globally. Preserve history.
Skyhawk.org will not be rewritten merely because portions of the existing HTML are old. Content that works, displays correctly, and remains maintainable will be preserved. Modernization effort will be concentrated where it improves usability, maintainability, privacy, contribution workflows, or long-term reliability.
The objective is a website that eventually reaches a stable state where normal Drupal security and compatibility maintenance can occur without repeatedly redesigning the site or rediscovering how custom pieces work.
Guiding Principles
- Drupal owns the content. Important operational information should live in Drupal entities, fields, taxonomy, Views, Webforms, and configuration wherever practical.
- Custom code is minimized. Drupal core and established contributed functionality are preferred over purpose-built modules where configuration can accomplish the same job reliably.
- Skyhawk-specific code lives outside contributed projects. No permanent Skyhawk customization should be stored inside Bootstrap Barrio or another contributed theme/module where an update can overwrite it.
- One canonical global CSS source. Site-wide Skyhawk CSS is maintained under the custom
skyhawk_site_fixesmodule rather than under a contributed theme. - Global CSS should be conservative. Site-wide rules provide the shell, typography baseline, responsive safety, navigation, and Drupal integration. They should not dictate the internal design of every content page.
- Legacy content gets compatibility, not punishment. Old HTML that still works should not be rebuilt merely for ideological purity. Legacy-specific CSS should be isolated to content that genuinely needs it.
- Modern content uses reusable patterns. New squadron pages, memorials, directories, and other modernized sections should use common Drupal structures and reusable design components.
- Privacy by design. Personal contact information should not need to be published simply to permit communication. Drupal routing and controlled forms should replace exposed email addresses wherever practical.
- Human workload matters. SDOs, editors, contributors, members, and administrators should enter only information that the system cannot determine automatically.
- Back up before mutation. Significant migrations and structural changes require a recoverable backup and verification step.
- One controlled change at a time. Changes should be broad enough to accomplish a meaningful task but verified before the next structural change begins.
Current Architecture Decisions
Theme
The live site uses Bootstrap Barrio. The abandoned skyhawk_barrio project has been retired from the live web tree and Drupal configuration.
Skyhawk CSS
The canonical site stylesheet is:
web/modules/custom/skyhawk_site_fixes/css/skyhawk-global.css
Custom Skyhawk CSS previously scattered through contributed Bootstrap Barrio, the abandoned custom Barrio theme, and older site-fix files has been consolidated into this location.
The next CSS objective is to separate genuinely global behavior from legacy compatibility behavior and reusable modern page-family behavior.
Contact and Privacy
The public contact workflow uses Drupal Webform. Public email addresses are being removed where forms and private routing can perform the same function.
Contact-form notification routing remains in controlled test mode while SDO assignments are reviewed.
SDO Directory
Skyhawk units and SDO assignments are maintained using Drupal taxonomy and Drupal user references rather than a custom routing module.
Super SDO reviewers can maintain the directory through Drupal. Revision history records changes.
Modernization Classes
The site-wide census will classify existing content into practical groups. These categories may be refined after the census.
Class 1: Modern / Native Drupal
Content already using maintainable Drupal structures and responsive presentation. These pages normally require little or no structural work.
Class 2: Legacy but Harmless
Older HTML that remains readable, responsive enough, and operational. These pages should generally be left alone except for safe global improvements.
Class 3: Legacy Layout-Dependent
Pages relying on fixed-width tables, extensive inline formatting, obsolete markup, or other structures requiring compatibility CSS. These pages receive a deliberate legacy compatibility layer rather than uncontrolled global exceptions.
Class 4: Modernization Candidates
Content whose usefulness justifies conversion into reusable modern Drupal presentation and management patterns. Squadron pages are the first major family in this category.
Reusable Page Families
The census will determine the final list. Expected families currently include:
- Squadron / unit pages
- Memorial and remembrance content
- Journal presentation
- Aircraft / BuNo galleries
- Research and data-heavy Views
- Reunion content
- Association information and administration
A page family should receive dedicated CSS or Drupal structure only when multiple pages genuinely share that design or behavior. We will not create a permanent stylesheet for every individual node.
Squadron Modernization: Phase 1
VMA-131 Diamondbacks is the prototype for the modern squadron-page model.
The objective is not to create a unique VMA-131 exception. The objective is to learn from VMA-131 and produce a reusable squadron structure that can gradually be applied to other units.
The emerging squadron structure includes:
- Unit identity / hero presentation
- Key unit facts
- Section navigation
- History
- People
- Stories
- Aircraft
- Photos
- Remembrance
- Research and source material
- Contribution workflow
- Access to preserved legacy records where appropriate
Members should be able to contribute photographs through the established contribution workflow. Stories, corrections, questions, and historical information should use the Association contact workflow with the relevant unit preselected where practical.
Verified Squadron-Page Foundation
Status: Verified on VMA-131.
The first reusable modern squadron-page implementation has been visually verified in Drupal/Barrio.
- Page-wide horizontal scrolling has been eliminated.
- Squadron content now remains inside the Drupal/Barrio content boundary.
- Large headings wrap within the available content area.
- The five-unit facts row remains contained.
- Squadron navigation remains inside the page and wraps rather than forcing horizontal scrolling.
- The preserved historical VMA-131 / VMA-132 record remains available inside the modern presentation.
Architecture decision: reusable squadron layout must use parent-relative sizing such as width:100% with appropriate max-width constraints. Viewport-relative container widths such as 92vw are not to be used inside Drupal/Barrio content containers.
The reusable squadron stylesheet is:
web/modules/custom/skyhawk_site_fixes/css/squadron.css
VMA-131 remains the first implementation and testing ground. Future squadron modernization should reuse this family structure rather than create independent node-specific CSS.
CSS Architecture Goal
The intended long-term structure is conceptual rather than filename-driven:
- Global foundation: safe site-wide layout, responsive media, navigation, typography, Drupal shell, and administration.
- Legacy compatibility: targeted rules for old HTML structures that genuinely need intervention.
- Reusable modern families: styling shared by modernized content families such as squadron pages.
The exact file organization will be determined after the site-wide census. We will not create unnecessary stylesheet fragmentation merely for organizational appearance.
Site-Wide Census
Status: Complete. The Drupal content/layout census was generated on August 16, 2026.
This census is intended to guide gradual modernization. The classifications are structural indicators, not judgments about historical importance or editorial quality.
Site Totals
- Total Drupal nodes: 46,995
- Published: 46,993
- Unpublished: 2
- Nodes with body content: 410
Structural Classification
| Class | Nodes | Meaning |
|---|---|---|
| Modern / Native Drupal | 46,642 | Structurally suitable for modern Drupal presentation or already using maintainable markup. |
| Legacy but Harmless | 89 | Older markup exists, but the content does not currently show strong layout dependency. |
| Legacy Layout-Dependent | 48 | Presentation relies significantly on tables, inline styles, fixed dimensions, old attributes, or similar compatibility behavior. |
| Modernization Candidate | 216 | Structurally complex content in a reusable or high-value family where gradual Drupal modernization is likely to provide meaningful benefit. |
Structural Features
- Nodes containing HTML tables: 315
- Nodes containing inline style attributes: 233
- Nodes containing fixed pixel widths: 24
- Nodes containing explicit minimum widths: 1
- Nodes containing nowrap behavior: 2
- Nodes containing legacy HTML tags: 115
- Nodes containing legacy presentation attributes: 316
- Nodes embedding stylesheet link tags: 1
- Nodes embedding style blocks: 10
- Nodes already containing Bootstrap grid structure: 0
- Nodes containing recognizable Skyhawk custom classes: 2
- Nodes showing a modern custom-page wrapper: 1
- Nodes with more than 50,000 body characters: 96
- Nodes containing more than 15 images: 53
Detected Content Families
These groupings identify likely reusable modernization patterns. They are working categories and may be refined as representative pages are reviewed.
| Family | Nodes |
|---|---|
| General Content | 45,956 |
| Journal | 644 |
| Squadron / Unit | 261 |
| Aircraft / BuNo / Gallery | 114 |
| Association / Administration | 13 |
| Research / Historical Data | 4 |
| Reunion | 3 |
Canonical CSS Findings
- Canonical stylesheet:
web/modules/custom/skyhawk_site_fixes/css/skyhawk-global.css - Size: 1,143 lines / 29,304 bytes
- !important declarations: 328
- min-width rules: 9
- overflow-x:auto rules: 3
- Broad non-frontpage body-field horizontal scrolling: Detected and scheduled for architectural review.
Leading Modernization Candidates
This is not an automatic work queue. It is a short list of structurally significant pages that may provide reusable lessons.
| Node | Family | Type | Page | Score |
|---|---|---|---|---|
| 144 | Squadron / Unit | article_unit | VMA-121 | 80 |
| 354 | Research / Historical Data | article | A-4 Skyhawk Production History | 80 |
| 417 | Squadron / Unit | article_unit | Vietnam Carrier Depolyment Timeline | 79 |
| 122 | Squadron / Unit | article_unit | VA-192 | 75 |
| 106 | Squadron / Unit | article_unit | VA-106 | 74 |
| 120 | Squadron / Unit | article_unit | VA-164 | 74 |
| 90 | Squadron / Unit | article_unit | VA-43 | 70 |
| 92 | Squadron / Unit | article_unit | VA-45 / VF-45 | 70 |
| 5 | Squadron / Unit | article_unit | VA-15 | 69 |
| 114 | Squadron / Unit | article_unit | VA-144 | 67 |
| 147 | Squadron / Unit | article_unit | VMA-131 and VMA-132 | 67 |
| 119 | Squadron / Unit | article_unit | VA-163 | 66 |
| 124 | Squadron / Unit | article_unit | VA-212 | 64 |
| 10 | Research / Historical Data | page | A-4 Skyhawk Production | 63 |
| 93 | Squadron / Unit | article_unit | VA-46 | 63 |
| 104 | Squadron / Unit | article_unit | VA-94 | 63 |
| 88 | Squadron / Unit | article_unit | VA-34 | 62 |
| 158 | Squadron / Unit | article_unit | VMA-225 | 61 |
| 162 | Squadron / Unit | article_unit | VMA-311 | 61 |
| 72 | Squadron / Unit | article_unit | VA-12 | 60 |
What the Census Means
The site should not be converted wholesale. The census supports a gradual model:
- Leave modern/native and harmless legacy content alone unless there is a practical reason to change it.
- Move genuinely legacy-dependent presentation rules out of broad global scope and into targeted compatibility behavior.
- Use VMA-131 as the first reusable squadron modernization model.
- Apply lessons from representative pages to page families rather than creating node-by-node exceptions.
- Continue recording architecture decisions and migration progress on this roadmap.
Census Reports
Detailed TXT and JSON census files are retained in the server modernization workspace for future analysis and comparison.
Migration Method
- Inventory first.
- Identify common structure.
- Define reusable Drupal/content patterns.
- Correct global CSS where a global correction is appropriate.
- Isolate legacy compatibility behavior.
- Modernize one representative page or family.
- Verify desktop, tablet, and phone behavior.
- Document the result here.
- Repeat gradually for the next useful content family.
What We Are Trying to Avoid
- Customizations hidden inside contributed themes.
- Multiple competing global stylesheets.
- Page-by-page CSS exceptions when a reusable rule is possible.
- Large custom modules when Drupal configuration can do the job.
- Publishing personal email addresses simply to make routing work.
- Rebuilding functioning historical content solely because its HTML is old.
- Changing multiple unrelated systems before verifying the previous change.
- Undocumented one-off fixes that future maintainers cannot understand.
Definition of “Done”
Skyhawk.org should eventually reach a state where:
- Historical content is preserved and accessible.
- New contributions have clear Drupal-managed workflows.
- Routine editors can maintain content without editing raw HTML.
- Personal information is protected appropriately.
- Global CSS is stable and predictable.
- Legacy compatibility rules are contained.
- Modern page families are reusable.
- Skyhawk customization is isolated from contributed-project updates.
- Backups and architecture are understandable to the next maintainer.
- Drupal upgrades can be treated primarily as maintenance rather than redesign projects.
Current Working Phase
Phase: VMA-131 reusable squadron-page completion.
The site-wide census is complete. Global and legacy CSS have been separated. The reusable squadron-page width architecture has been established and visually verified on VMA-131. Current work should continue linearly on VMA-131 presentation and content-management behavior before applying the model to additional squadron pages.
Decision Log
- 2026-08-16: Established explicit operating rules for AI agents and maintainers so modernization work remains linear, completed work is not duplicated, coding requires authorization, report-transfer workflow is preserved, and significant decisions remain documented across AI sessions and maintainers.
- 2026-08-16: Visually verified the VMA-131 reusable squadron-page foundation. Page-wide horizontal scrolling is eliminated, content remains within the Drupal/Barrio container, and parent-relative sizing is now the standard for future squadron modernization.
- 2026-08-16: Established VMA-131 as the first reusable modern squadron-page implementation. Squadron CSS now lives in the Skyhawk custom module, is attached through Drupal, and uses parent-relative layout widths instead of viewport-relative container widths.
- 2026-08-16: Began separating global responsive CSS from legacy compatibility behavior. The census-derived legacy compatibility population now preserves legacy layout behavior only where it is structurally justified.
- 2026-08-16: Completed the first site-wide Drupal content/layout census and recorded the structural classifications and reusable content families in this roadmap.
- 2026-08-16: Retired the abandoned
skyhawk_barriotheme from the live site and configuration. - 2026-08-16: Consolidated Skyhawk global CSS under
skyhawk_site_fixes. - 2026-08-16: Agreed that modernization will proceed incrementally, beginning with VMA-131, while architecture decisions are made from site-wide evidence.
- 2026-08-16: Established this Drupal page as the living modernization roadmap and decision record.
Next Action
Run the read-only Drupal site census, classify the content, identify common structures and high-risk legacy patterns, and add the resulting summary to this page before restructuring the global CSS further.