Skip to main content

Skyhawk Site Modernization Roadmap

Skyhawk Site Modernization Roadmap

READ THIS FIRST: AI / Maintainer Continuity Brief

This page is instructions for any AI assistant working on this site. Read this page in full before writing any code. Do not reconstruct facts from memory or assumption when a reference page already states them.

DO NOT REPEAT THIS FAILURE. A prior session was told to keep this work linear and immediately failed to do so, burying rules inside unrelated content. Before making a change, read the current instructions, respect completed decisions, and preserve the agreed structure. If a previous step has been completed and verified, do not redesign, move, replace, or reopen it unless new evidence requires that action or the user explicitly directs it.

Operating Rules for AI Agents and Maintainers

  1. This is a working relationship, not a friendship exercise. Concentrate on the site, the evidence, and the task at hand.
  2. Understand the premise before expanding the work. Discuss narrowly first. Do not expand scope, propose additional solutions, or infer new goals until explicitly requested.
  3. Do not create side projects. Work on the current problem and current phase. An interesting adjacent problem is not authorization to pursue it.
  4. Use the word "hero" accurately. Reserve it for a person who actually did something heroic.
  5. Respect requests for limited answers. When a Yes/No answer is requested, answer Yes or No.
  6. Ask before writing code. Discussion, diagnosis, and agreement come first.
  7. Once authorized, code in one complete working block at a time. Make that block as expansive as necessary to perform the agreed step, including pre-flight checks, backups, verification, and rollback protection. Then stop and wait for actual output before writing the next block.
  8. There is one established two-block exception: an A2-side audit producing a timestamped report that must transfer to the local Windows computer. The A2 block and its local PowerShell transfer block are one logical workflow.
  9. For report workflows, exit A2 correctly — the outer SSH workflow's final command is exit, placed after any closing subshell parenthesis, not inside it.
  10. The local report-transfer block locates the specific or newest timestamped report on A2, downloads it to C:\Users\genea\Downloads\Website, verifies the local file exists and is nonzero, and reconnects using ssh -a A2.
  11. Proceed linearly and avoid retrograde motion. Do not redo, replace, reopen, or redesign completed work merely because another approach exists.
  12. Read the relevant reference pages before acting. Do not rely solely on conversational memory.
  13. Do not duplicate an existing solution. Search the actual codebase — all custom modules, not just the one you assume is relevant — before creating anything new.
  14. Preserve established architecture. Do not recreate retired CSS, retired themes, or superseded implementations.
  15. Do not put Skyhawk custom code inside contributed Drupal projects. It belongs in skyhawk_site_fixes.
  16. Do not create another global stylesheet. Global site behavior belongs in skyhawk_site_fixes/css/skyhawk-global.css.
  17. Do not turn page-specific exceptions into global rules.
  18. Legacy content is preserved unless there is a practical reason to modernize it.
  19. Follow the current squadron modernization prototype and lessons rather than one-node patches — see /blade/vma-131-214-squadron-template.
  20. Prefer native Drupal structures. Fields, taxonomy, Views, Webform, revisions, permissions, and configuration are preferred when native Drupal can accomplish the requirement cleanly. Check /blade/drupal-environment-reference for what's already installed before building anything new.
  21. Use the existing skyhawk_site_fixes module for genuinely site-specific integration. Do not create additional custom modules merely to isolate small fixes.
  22. Separate diagnosis from modification. When the cause of a problem is uncertain, inspect first with a read-only audit before making changes.
  23. Back up before consequential changes and verify afterward.
  24. Downloaded scripts are ZIP files, not loose plain-text script downloads.
  25. Record significant decisions on the relevant reference page so continuity survives changes of conversation, AI model, maintainer, or memory.
  26. Do not mistake motion for progress. Prefer fewer, reusable mechanisms over accumulating exceptions, duplicate CSS, patches, or new maintenance obligations.
  27. No Drupal messenger()/status popups anywhere on this site. All form/action results render inline in the page via the PageMessageTrait pattern (skyhawk_site_fixes/src/Traits). Exception not yet fixed: skyhawk_gallery/PhotoContributionForm.php still uses messenger() — do not copy that part of its pattern, and do not fix it without being asked (side-project rule).
  28. Any route showing per-request or token-gated state must call \Drupal::service('page_cache_kill_switch')->trigger() at the top of buildForm()/the controller. Drupal's own page cache (1hr default) will silently serve stale state otherwise, independent of drush cache:rebuild.
  29. To verify a JS library is actually loading on a page: check the page's actual script src output, or inspect the aggregated bundle it points to. Grepping page HTML for a library's machine name proves nothing — library names never appear in rendered output.
  30. Before trusting any log file, confirm it belongs to the site/domain actually being worked on. Multiple sites/accounts can share a server; error_log files are not self-labeled. Confirmed real log for this site: /home/darwus/drupalbeta/web/error_log.
  31. Confirm the real docroot before placing any file: /home/darwus/drupalbeta/web — not /home/darwus/public_html/drupalbeta or any variant.

Continuity test: A future AI agent or maintainer should be able to read this page, follow its links to the relevant reference page for the task at hand, and continue forward without reconstructing or repeating completed work.

Reference Pages