{
  "schema": "link.scope_chain.tier/1",
  "scope": "industry",
  "parent": "community.events",
  "industry_id": "community.events.chapter",
  "label": "Chapter edition",
  "summary": "The preset for a chapter of the U.S. Naval Academy Alumni Association on Link: what a chapter is and exists to do, its year, the five functions and every service under them with its status and the office accountable for it, the kinds of gathering it holds, its words, its offices, and its duty to report to national. Written from the record of the first chapter tenant, Los Angeles / Orange County (laoc), for that chapter's board meeting of Tue 13 Oct 2026.",
  "written": {
    "on": "2026-10-12",
    "under": "WO-2026-1012-LAOC-BOARD-001 task 1",
    "by": "Opus 5.5, builder (duo A)",
    "reviewed_by": "Sonnet 5.5, reviewer (duo A), 2026-10-12"
  },
  "inherits": "Everything community.events names (services, event types, tables, migrations, modules) through hascom/providers/scope_chain.py TIERS['community.events']. This file names only the chapter's delta and its account of itself.",
  "service_fields": {
    "key": "the service's name in data; where it equals an inherited service name (registration, checkin, rsvp) this entry is the chapter's statement of that service, not a second service",
    "label": "the service's name for people",
    "function": "which of the five functions it serves",
    "summary": "one line: what it is for",
    "purpose": "the paragraph: what it does and why the chapter needs it",
    "serves": "member, staff and/or board",
    "reads / writes": "what it takes in and what it leaves behind; a modelled service with a framework_ref takes these from its framework",
    "requires_component": "the composition component it needs (modules/composition.js COMPONENTS), whose own requirements follow; null with a component_note where the service is not a composition component",
    "accountable_office": "the office that answers for it (see offices); accountability_basis says whether the record assigns it or this edition does",
    "status": "live, modelled or next (see status_vocabulary)",
    "surface": "live only: the path on the chapter's site, which exists in the site root",
    "evidence": "live only: how we know it is live",
    "event_suite_refs": "where the service appears in Game Day on Link, by stage id and capability name",
    "framework_ref": "modelled: the framework in /gameday/stages.json, by stage id and capability name",
    "framework": "modelled or next without a Game Day entry: its own framework, in the same eight fields (purpose, member_sees, staff_sees, reads, writes, reuses, ships_with, done_when)",
    "depends_on": "the decision or dependency the service waits on, where one is named"
  },
  "status_vocabulary": {
    "live": "running on the chapter's site today, at a surface that exists",
    "modelled": "a framework and a build seed; built when development is ripe; never shown as live",
    "next": "queued behind a decision or a dependency named in its framework"
  },
  "community": {
    "kind": "A local chapter of the U.S. Naval Academy Alumni Association: a body of alumni, families and friends of the Naval Academy in one region, governed by its own bylaws and board, a chapter of the national Association, and answerable to it for reporting its active membership. A veteran community. The reference chapter is The U.S. Naval Academy Alumni Chapter of Los Angeles, working as the USNA Alumni Association, Los Angeles / Orange County Chapter (USNAAA LA/OC), a 501(c)(3) affiliate per its event description ('Organization: USNAAA LA/OC Chapter — 501(c)(3)').",
    "members": "Alumni of the Naval Academy, their families and friends, across the chapter's region (for LA/OC, Los Angeles and Orange County). Blue and Gold Officers, who carry the Academy's outreach, are among the members. Guests at chapter gatherings include spouses and families, West Point and Air Force alumni (welcome at the Army/Navy watch party) and sponsors; the registration roles are Alumni, Guest, Spouse or Family, West Point, Air Force and Sponsor.",
    "exists_to": [
      "Fellowship and in-person programming: members prefer in-person programming (June 2026 minutes), and the annual calendar carries four in-person meetings, two of which are the Army/Navy watch party and the Tiki bar social.",
      "Chapter business under Robert's Rules.",
      "Welcoming new leaders (the Blue and Gold / Parents' Club Welcome Aboard luncheon, June 2026).",
      "Outreach for the Academy, through the Blue and Gold Officers among its members.",
      "Reporting active membership to national."
    ],
    "governs_itself": "A board of directors under amended and restated bylaws. Three officers are required: President, Secretary, and Chief Financial Officer, 'known also as Treasurer' (Art. IV s.10). The board may appoint 'such other Officers as the business of the Chapter may require' (Art. IV s.3), which is how an Events Chair is seated. No officer, agent or employee may bind the chapter by contract or pledge its credit unless a board resolution authorizes it (Art. VII s.1). The books are open to every director. The LA/OC board meets on the second Tuesday of each month at 18:30 (set at the August 2026 meeting), on Zoom; its board roster on Link has nine members. Minutes are drafted, distributed for one-tap review, ratified at a following meeting and sealed: the June 10, 2026 minutes are the first ratified record on Link, August's await ratification on 13 Oct 2026, and September's are not yet drafted.",
    "must_report": "Active chapter membership, to the national Alumni Association, through myUSNA.com, which the national board of trustees made the official reporting platform. Columns, cadence and channel are not in the record; the chapter's questions to chapter services are still open (see reporting)."
  },
  "task": {
    "the_year": "A chapter's year is a monthly board meeting, four in-person gatherings with the Army/Navy watch party in December as the largest, smaller gatherings around Navy games and chapter days, outreach for the Academy, and the duty to report active membership to national. The LA/OC record for 2026 follows.",
    "meetings": [
      "Board meeting on the second Tuesday of each month, 18:30, on Zoom. October 2026 agenda in the record: Army/Navy budget and pricing strategy, raffle plan.",
      "Minutes cycle: drafted, distributed for one-tap review, ratified at a following meeting, sealed and archived for members.",
      "A meeting-cadence survey was approved (June 2026 minutes). Board meetings are to be logged on myUSNA as RSVP-able events for the year (August 2026 draft minutes)."
    ],
    "gatherings": [
      "Four in-person meetings a year on the annual calendar (June 2026 minutes); two are named, the Army/Navy watch party and the Tiki bar social; the other two are not in the record.",
      "The Army/Navy watch party in December, the biggest event on the chapter's calendar: 2025 aboard Battleship IOWA (250 guests); 2026 on Sat 12 Dec aboard Battleship IOWA, San Pedro.",
      "Navy football watch parties: Navy-Air Force at Tom's Bar, downtown Los Angeles; Navy-Notre Dame at Hermosa Beach (dates not in the record).",
      "Range Day: Sat 5 Dec 2026 at Raahauge's, Corona, approved by the board 5-0 on 12 Aug 2026.",
      "The Welcome Aboard luncheon with the Blue and Gold Officers and the Parents' Club (June 2026)."
    ],
    "outreach": [
      "Outreach for the Academy through the Blue and Gold Officers among the members.",
      "Army/Navy 2026: colors and anthem by Troy High School NROTC (Bill Lauper commanding; outreach drafted); West Point and Air Force alumni invited (the West Point society will not co-host in 2026, a board decision).",
      "A corporate 'access for donations' opportunity was noted (June 2026 minutes)."
    ],
    "reporting_cycle": [
      "Active membership to national through myUSNA; cadence not in the record.",
      "Attendance from Link's attendance report, in national's column shape once national names it."
    ],
    "under_consideration": [
      "An Anduril presentation on 26 Oct 2026, pending Navy League correspondence.",
      "A spring outing with a Navy facility as the target venue; the source names its sport, which is outside this edition's event types and vocabulary.",
      "A membership 'discount card' model, proposed and not voted (August 2026 draft minutes)."
    ]
  },
  "functions": [
    {
      "key": "operations",
      "label": "Operations",
      "purpose": "The work of running a gathering on the day and the days around it: getting people registered, getting them through the door in seconds, giving staff one console for arrivals and walk-ups, placing each guest's own page and table in their hand, and answering a guest who needs help. For this chapter that runs from the Army/Navy watch party, the largest gathering of the year, to Range Day and the socials.",
      "services": [
        "registration",
        "checkin",
        "arrival_console",
        "staff_signin",
        "member_portal",
        "table_assignment",
        "program_and_deck_card",
        "support_desk",
        "caterer_count_freeze"
      ]
    },
    {
      "key": "coordination",
      "label": "Coordination",
      "purpose": "Keeping members, guests, staff and the board moving together: confirmations and reminders from the chapter's own sender, RSVP changes, the chapter calendar, one short link and one QR code for every channel, the follow-up after a gathering, and the board's own monthly meeting run to Robert's Rules.",
      "services": [
        "confirmations",
        "rsvp",
        "calendar",
        "meeting_runner",
        "reminders",
        "thank_you_and_survey",
        "short_link_and_flyer"
      ]
    },
    {
      "key": "stewardship",
      "label": "Stewardship",
      "purpose": "Looking after the chapter's money and what it is entrusted with: the cost and price model and the venue plan, ticket sales, the payments ledger, the raffle, gifts and sponsor gifts, and the close of each event's books, which the Treasurer signs. Under the bylaws no officer binds the chapter by contract or pledges its credit without a board resolution (Art. VII s.1), and the books are open to every director.",
      "services": [
        "event_studio",
        "ticket_purchase",
        "table_reservation",
        "payments_ledger",
        "raffle",
        "gifts_and_receipts",
        "financial_close"
      ]
    },
    {
      "key": "truth",
      "label": "Truth",
      "purpose": "What the chapter can show to be so: its sealed minutes, its attendance record, the board's working pages, the record of what staff did on the day, the report to national, and the event suite that says plainly what is live and what is still a framework. Nothing is shown as working that is not.",
      "services": [
        "board_room",
        "minutes_archive",
        "attendance_report",
        "national_export",
        "board_brief",
        "event_suite",
        "ops_ledger",
        "media_classes"
      ]
    },
    {
      "key": "future_and_identity",
      "label": "Future and identity",
      "purpose": "Who the chapter is and who it will be: its own name, host and sender; each member's own profile and store; the keepsakes of its gatherings; membership on myUSNA joined to attendance on Link; the offices that carry its authority; and the Academy outreach that brings the next members.",
      "services": [
        "chapter_identity",
        "member_profile",
        "photo_album",
        "membership_roster_import"
      ],
      "also_here": [
        "The offices (see offices): defined and held in the tenant's own database and appointed through the tenant's API by the Secretary. They have no page of their own on the chapter site, so they are listed as offices, not as a live service.",
        "Membership on myUSNA (see reporting): bought and reported on national's platform, not a Link service.",
        "The Blue and Gold outreach: part of the chapter's purpose in the record; no Link service for it is built, modelled or queued."
      ]
    }
  ],
  "services": [
    {
      "key": "registration",
      "label": "Event registration",
      "function": "operations",
      "summary": "Members and guests sign themselves up for a chapter event; the roster everything else works from.",
      "purpose": "One canonical registration page per event, fenced to the chapter: name, email, mobile and affiliation (Alumni, Guest, Spouse or Family, West Point, Air Force, Sponsor), with a class-year field. The same address is what the flyer's QR code, the myUSNA event post and every email point at, so there is one roster and no second list to reconcile. Opened without an event, the page resolves the chapter's next upcoming event.",
      "serves": [
        "member",
        "staff"
      ],
      "reads": [
        "the event, fenced to the chapter"
      ],
      "writes": [
        "a participant on the roster with a registration number and a check-in code",
        "a branded confirmation email",
        "a notice to the roster's watchers"
      ],
      "requires_component": "rsvp",
      "accountable_office": "events_chair",
      "accountability_basis": "assigned by this edition to the office that runs events; for Army/Navy 2026 the event is run by the Secretary (see the tenant file)",
      "status": "live",
      "surface": "/register/",
      "evidence": "The chapter's first registration (LINK-LAOCAR-0001) landed fenced to the chapter with a delivered confirmation (WO-2026-0908-LINK-USNAAA-LAOC-001 five_field.artifacts[9],[10]); the Army/Navy event's QR payload points at /register/?event=evt_LAOC_ARMYNAVY_20261212 (public event record, read 12 Oct 2026).",
      "event_suite_refs": [
        {
          "seed": "/gameday/stages.json",
          "stage": "register",
          "capability": "Event registration"
        }
      ]
    },
    {
      "key": "checkin",
      "label": "QR and code check-in",
      "function": "operations",
      "summary": "A guest checks in on arrival by the link in their email, the QR code, or a typed six-digit code.",
      "purpose": "Arrival takes seconds: the guest opens their own check-in link, shows the QR code, or types the code from their confirmation. The code is paired to its event token, so a link opens only for its own holder.",
      "serves": [
        "member",
        "staff"
      ],
      "reads": [
        "the check-in code and its event token"
      ],
      "writes": [
        "the check-in record"
      ],
      "requires_component": "checkin",
      "accountable_office": "events_chair",
      "accountability_basis": "assigned by this edition",
      "status": "live",
      "surface": "/checkin/",
      "evidence": "Live on the chapter site (WO-2026-1012-LAOC-BOARD-001 prior_art.facts_extracted.what_the_site_does_today: '/checkin/ (QR and code)').",
      "event_suite_refs": [
        {
          "seed": "/gameday/stages.json",
          "stage": "arrive",
          "capability": "QR and code check-in"
        }
      ]
    },
    {
      "key": "arrival_console",
      "label": "Arrival and membership console",
      "function": "operations",
      "summary": "Staff see registered, checked in and awaiting, and register a walk-up in one motion.",
      "purpose": "The door's working screen for chapter staff: the roster with registered, checked-in and awaiting counts moving live, a walk-up form that registers and checks a guest in at once (with the chapter's roles), the affiliation chip for the name tag, and the attendance report tab. Staff only.",
      "serves": [
        "staff"
      ],
      "reads": [
        "the roster",
        "check-in records"
      ],
      "writes": [
        "walk-up registrations",
        "check-ins"
      ],
      "requires_component": "checkin",
      "accountable_office": "events_chair",
      "accountability_basis": "assigned by this edition",
      "status": "live",
      "surface": "/console/",
      "evidence": "September build plan step 4 DONE (WO-2026-0908-LINK-USNAAA-LAOC-001); '/console/ staff console: arrival check-in, roster, attendance' (WO-2026-1012-LAOC-BOARD-001 facts_extracted.what_the_site_does_today).",
      "event_suite_refs": [
        {
          "seed": "/gameday/stages.json",
          "stage": "arrive",
          "capability": "Walk-up register and check-in"
        },
        {
          "seed": "/gameday/stages.json",
          "stage": "run",
          "capability": "Arrival and membership console"
        }
      ]
    },
    {
      "key": "staff_signin",
      "label": "Staff sign-in",
      "function": "operations",
      "summary": "Chapter staff and officers sign in by a magic link in a chapter-branded email, with Face ID as an opt-in.",
      "purpose": "One door at a time: a new device signs in by the emailed link (with an eight-digit code as the fallback); a known device signs in with Face ID or Touch ID. The email comes from the chapter's own sender and lands on the chapter's own host. Staff surfaces such as the console and the studio sit behind it.",
      "serves": [
        "staff",
        "board"
      ],
      "reads": [
        "the staff roster, which follows from the offices people hold"
      ],
      "writes": [
        "a signed-in session on the chapter's host",
        "a passkey when the staff member opts in"
      ],
      "requires_component": null,
      "component_note": "not a composition component: the fleet's sign-in service, branded per organisation",
      "accountable_office": "secretary",
      "accountability_basis": "the Secretary provisioned the five offices, and with them the staff rows, through the live API (WO-2026-0917-LAOC-PRICING-001 audit.go_live_preconditions_not_code[0])",
      "status": "live",
      "surface": "/staff/",
      "evidence": "Branded sign-in verified by real sends (September build plan step 5 DONE; WO-2026-0908-LINK-USNAAA-LAOC-001 five_field.artifacts[20]).",
      "event_suite_refs": [
        {
          "seed": "/gameday/stages.json",
          "stage": "run",
          "capability": "Staff sign-in"
        }
      ]
    },
    {
      "key": "member_portal",
      "label": "My Event portal",
      "function": "operations",
      "summary": "The guest's own page for the event: schedule, check-in state, messages from the chapter.",
      "purpose": "Each guest has a page of their own, opened by their check-in credential, carrying the event's schedule, whether they are checked in, messages the chapter sends to the page, and the standing line 'Questions? Ask any chapter staff member.' The page was cloned from the platform's first tenant and still carries an assignment grid and profile fields a chapter does not use, and a static sponsor line from another organisation's event; the vocabulary map below lists each inherited word.",
      "serves": [
        "member"
      ],
      "reads": [
        "the guest's registration",
        "the event"
      ],
      "writes": [
        "the guest's answers to messages shown on the page"
      ],
      "requires_component": "rsvp",
      "accountable_office": "events_chair",
      "accountability_basis": "assigned by this edition",
      "status": "live",
      "surface": "/portal/",
      "evidence": "Live (WO-2026-1012-LAOC-BOARD-001 facts_extracted: '/portal/ (My Event)'); the inherited layout is recorded in WO-2026-0908-LINK-USNAAA-LAOC-001 five_field.issues[19].",
      "event_suite_refs": [
        {
          "seed": "/gameday/stages.json",
          "stage": "ondeck",
          "capability": "My Event portal"
        }
      ]
    },
    {
      "key": "table_assignment",
      "label": "Table assignment at the door",
      "function": "operations",
      "summary": "Turn the studio's modelled seats into actual seats as guests arrive, and print the name tag.",
      "purpose": "When a guest checks in, they are told their table by name and the seat becomes actual, not modelled; walk-ups go to an unseated queue.",
      "serves": [
        "member",
        "staff"
      ],
      "requires_component": "placement",
      "accountable_office": "events_chair",
      "accountability_basis": "assigned by this edition",
      "status": "modelled",
      "framework_ref": {
        "seed": "/gameday/stages.json",
        "stage": "arrive",
        "capability": "Table assignment at the door and the name tag"
      }
    },
    {
      "key": "program_and_deck_card",
      "label": "Program timeline and deck card",
      "function": "operations",
      "summary": "The day's program and the guest's own table on the deck plan, in their hand.",
      "purpose": "A timeline for the day and the venue plan with the guest's table lit, inside the My Event portal.",
      "serves": [
        "member",
        "staff"
      ],
      "requires_component": "placement",
      "accountable_office": "events_chair",
      "accountability_basis": "assigned by this edition",
      "status": "modelled",
      "framework_ref": {
        "seed": "/gameday/stages.json",
        "stage": "ondeck",
        "capability": "Program timeline and deck card"
      }
    },
    {
      "key": "support_desk",
      "label": "Support desk",
      "function": "operations",
      "summary": "One number and one inbox for day-of help, with every resolution attributed.",
      "purpose": "A lost ticket, a dietary question, accessibility, parking: the guest texts the desk from their page and staff work one queue.",
      "serves": [
        "member",
        "staff"
      ],
      "requires_component": "comms",
      "accountable_office": "events_chair",
      "accountability_basis": "assigned by this edition",
      "status": "modelled",
      "framework_ref": {
        "seed": "/gameday/stages.json",
        "stage": "ondeck",
        "capability": "Support desk"
      }
    },
    {
      "key": "caterer_count_freeze",
      "label": "Caterer count freeze and day-of tally",
      "function": "operations",
      "summary": "Exact entrée counts to the caterer before the event, and a live tally on the day.",
      "purpose": "Staff freeze the counts and the caterer receives a signed count sheet; on the day the tally runs against it.",
      "serves": [
        "staff"
      ],
      "requires_component": "checkout",
      "accountable_office": "events_chair",
      "accountability_basis": "assigned by this edition",
      "status": "modelled",
      "framework_ref": {
        "seed": "/gameday/stages.json",
        "stage": "run",
        "capability": "Caterer count freeze and day-of tally"
      }
    },
    {
      "key": "confirmations",
      "label": "Branded confirmation and magic link",
      "function": "coordination",
      "summary": "Every member-facing email comes from the chapter's own sender, with a delivery ledger.",
      "purpose": "Registration confirmations, sign-in emails and the chapter's other sends carry the chapter's name and come from laoc@link.onamerica.org, so a member's mail comes from the chapter by name. Each send is recorded in a delivery ledger staff can read.",
      "serves": [
        "member",
        "staff"
      ],
      "reads": [
        "the roster",
        "the tenant's sender identity"
      ],
      "writes": [
        "sends and opens in the delivery ledger"
      ],
      "requires_component": "comms",
      "accountable_office": "events_chair",
      "accountability_basis": "assigned by this edition",
      "status": "live",
      "surface": "/staff/",
      "evidence": "Branded sign-in and confirmation verified by real sends (September build plan step 5 DONE); the comms ledger is readable from the tenant API by staff (WO-2026-0908-LINK-USNAAA-LAOC-001 five_field.artifacts[29]). The surface shown is the sign-in the magic link opens; the confirmation itself is an email.",
      "event_suite_refs": [
        {
          "seed": "/gameday/stages.json",
          "stage": "confirm",
          "capability": "Branded confirmation and magic link"
        }
      ]
    },
    {
      "key": "rsvp",
      "label": "RSVP changes",
      "function": "coordination",
      "summary": "A guest changes their answer from the link in their email; the roster follows.",
      "purpose": "Plans change; the guest says so in one tap and the roster, the counts and the watchers stay true without a staff member touching anything.",
      "serves": [
        "member"
      ],
      "reads": [
        "the guest's RSVP link"
      ],
      "writes": [
        "the RSVP answer on the roster"
      ],
      "requires_component": "rsvp",
      "accountable_office": "events_chair",
      "accountability_basis": "assigned by this edition",
      "status": "live",
      "surface": "/rsvp/",
      "evidence": "Live (WO-2026-1012-LAOC-BOARD-001 facts_extracted.what_the_site_does_today: '/rsvp/').",
      "event_suite_refs": [
        {
          "seed": "/gameday/stages.json",
          "stage": "confirm",
          "capability": "RSVP changes"
        }
      ]
    },
    {
      "key": "calendar",
      "label": "Chapter calendar",
      "function": "coordination",
      "summary": "The chapter's home page lists upcoming events live, and a meeting held today with its Join button.",
      "purpose": "Members see what is coming without asking: upcoming events with Register and, for a meeting, Join; a 'Tonight' block appears by itself on the day of a meeting and shows the Join button once the meeting address is set; the ratified minutes sit beneath.",
      "serves": [
        "member",
        "staff",
        "board"
      ],
      "reads": [
        "the chapter's public card, GET /api/orgs/laoc (upcoming events)",
        "the list of ratified minutes"
      ],
      "writes": [],
      "requires_component": null,
      "component_note": "not a composition component: the public organisation card",
      "accountable_office": "secretary",
      "accountability_basis": "assigned by this edition; the board's meetings are the Secretary's record",
      "status": "live",
      "surface": "/",
      "evidence": "Live (WO-2026-0908-LINK-USNAAA-LAOC-001 five_field.artifacts[15]); on 12 Oct 2026 the public card lists the October board meeting, Range Day and Army/Navy."
    },
    {
      "key": "meeting_runner",
      "label": "Run a meeting to Robert's Rules",
      "function": "coordination",
      "summary": "Attendance, quorum, motions, seconds, amendments, roll-call votes and adjournment, with the minutes drafted from the record.",
      "purpose": "The board conducts its business under Robert's Rules. The meeting runner records who is present and whether there is quorum, each motion with its second, amendments, roll-call votes and points of order, and on adjournment drafts the minutes into the board room for review and ratification. It discharges the Secretary's tasker from the June 2026 minutes: automate meeting minutes.",
      "serves": [
        "board"
      ],
      "reads": [
        "the board roster"
      ],
      "writes": [
        "attendance and quorum",
        "motions, seconds, amendments, votes, points of order",
        "a minutes draft in the board room"
      ],
      "requires_component": null,
      "component_note": "not a composition component: the board-minutes pipeline",
      "accountable_office": "secretary",
      "accountability_basis": "the June 2026 minutes' Secretary tasker 'automate meeting minutes' (WO-2026-0908-LINK-USNAAA-LAOC-001 chapter.june_2026_board_minutes_source)",
      "status": "live",
      "surface": "/board/meeting/",
      "evidence": "Live since 10 Sep 2026; 'The October 13 meeting can be run from it end to end' (WO-2026-0908-LINK-USNAAA-LAOC-001 five_field.artifacts[28])."
    },
    {
      "key": "reminders",
      "label": "Receipt, count-freeze notice and know-before-you-go",
      "function": "coordination",
      "summary": "What each guest bought, and what to expect, on a timeline the event owns.",
      "purpose": "A receipt, a note a week out that counts freeze, and a day-before guide with parking, the gate and the program.",
      "serves": [
        "member"
      ],
      "requires_component": "comms",
      "accountable_office": "events_chair",
      "accountability_basis": "assigned by this edition",
      "status": "modelled",
      "framework_ref": {
        "seed": "/gameday/stages.json",
        "stage": "confirm",
        "capability": "Receipt, count-freeze notice and know-before-you-go"
      }
    },
    {
      "key": "thank_you_and_survey",
      "label": "Thank-you and survey",
      "function": "coordination",
      "summary": "Close the loop with every guest within 48 hours.",
      "purpose": "A thank-you with the album link and two questions, the answers beside attendance.",
      "serves": [
        "member",
        "staff"
      ],
      "requires_component": "comms",
      "accountable_office": "events_chair",
      "accountability_basis": "assigned by this edition",
      "status": "modelled",
      "framework_ref": {
        "seed": "/gameday/stages.json",
        "stage": "after",
        "capability": "Thank-you and survey"
      }
    },
    {
      "key": "short_link_and_flyer",
      "label": "Short link and flyer",
      "function": "coordination",
      "summary": "laoc.link.onamerica.org/armynavy and a QR code on the flyer, both landing on the event's registration page.",
      "purpose": "One short address and one QR code for the flyer and the myUSNA event post, so every channel leads to the same registration page and the same roster.",
      "serves": [
        "member",
        "staff"
      ],
      "reads": [
        "the event row: its id and registration address"
      ],
      "writes": [
        "one line in the site's _redirects file"
      ],
      "requires_component": null,
      "component_note": "not a composition component: the event link service",
      "accountable_office": "events_chair",
      "accountability_basis": "assigned by this edition; the flyer is one of the 1 November milestones in the Army/Navy handover (Paris Scott to Ron Helms, 15 Aug)",
      "status": "next",
      "depends_on": "the ticket price, which the flyer carries: the board's decision",
      "framework": {
        "purpose": "One short address and one QR code for the Army/Navy flyer and the myUSNA event post, both landing on the event's registration page.",
        "member_sees": "laoc.link.onamerica.org/armynavy on the flyer and on myUSNA, and a QR code that opens the same registration page.",
        "staff_sees": "The registration link, its QR image and embed text from the event link service, in the console while signed in.",
        "reads": [
          "the event row: id and registration address"
        ],
        "writes": [
          "one line in _redirects: /armynavy to /register/?event=evt_LAOC_ARMYNAVY_20261212"
        ],
        "reuses": [
          "the event link service (registration URL, QR image, embed text), read by staff while signed in",
          "the short-redirect pattern already used for an earlier event (/aug12)",
          "the QR payload already on the event row, which points at /register/?event=evt_LAOC_ARMYNAVY_20261212"
        ],
        "ships_with": [
          "September build plan step 3 (NEXT) and step 9 (NEXT: by 1 Nov with the price), WO-2026-0908-LINK-USNAAA-LAOC-001"
        ],
        "done_when": "The short address opens the Army/Navy registration page with no other tenant's path in the URL, and the flyer is delivered to the board through the comms boundary by 1 November."
      }
    },
    {
      "key": "event_studio",
      "label": "Event studio: deck plan and cost model",
      "function": "stewardship",
      "summary": "The venue plan, the tables, the bar and buffet, seating and the cost and price model for an event. Officers sign in.",
      "purpose": "Where the officers responsible for an event's money and layout work: the whole venue and its deck, the tables and their seats, where the bar and buffet stand, the cost lines and price tiers, and break-even. What an officer may see or change is granted by their office (studio.view, pricing.edit, placement.edit). The board's working numbers live here and on the brief, not on this edition.",
      "serves": [
        "board",
        "staff"
      ],
      "reads": [
        "the venue's plan",
        "cost lines, price tiers and pricing configuration",
        "seat units"
      ],
      "writes": [
        "cost lines, price tiers, layout and seating, each by the capability that grants it"
      ],
      "requires_component": "pricing",
      "component_note": "with placement for the deck and seating",
      "accountable_office": "treasurer",
      "accountability_basis": "assigned by this edition: the cost and price model is the chapter's money; the Treasurer's office grants org.admin, which includes every studio capability",
      "status": "live",
      "surface": "/studio/",
      "evidence": "'The studio is LIVE'; the lane was seeded through the live API as the Secretary and verified by content (WO-2026-0917-LAOC-PRICING-001 plan.progress.complete)."
    },
    {
      "key": "ticket_purchase",
      "label": "Ticket purchase with entrée and seat zone",
      "function": "stewardship",
      "summary": "Sell the seat and capture the two facts the day needs from every guest: which entrée, which zone.",
      "purpose": "Card checkout on the chapter's own Stripe account, an entrée per ticket and a seating zone, a receipt; with Stripe absent nothing is sold at all. Which form ticketing takes first is the board's decision 3 on 13 Oct (the September options are in the tenant file).",
      "serves": [
        "member",
        "staff"
      ],
      "requires_component": "checkout",
      "accountable_office": "treasurer",
      "accountability_basis": "the chapter-owned Stripe account is the Treasurer's go-ahead (27 Sep)",
      "status": "modelled",
      "depends_on": "the board's vote on 13 Oct; the chapter's Stripe account",
      "framework_ref": {
        "seed": "/gameday/stages.json",
        "stage": "register",
        "capability": "Ticket purchase with entrée and seat zone"
      }
    },
    {
      "key": "table_reservation",
      "label": "Reserve a whole table",
      "function": "stewardship",
      "summary": "A class, a company or a family takes a table of ten.",
      "purpose": "A party holding ten seats as one order, marked reserved in the studio and the console.",
      "serves": [
        "member",
        "staff"
      ],
      "requires_component": "placement",
      "accountable_office": "events_chair",
      "accountability_basis": "assigned by this edition",
      "status": "modelled",
      "framework_ref": {
        "seed": "/gameday/stages.json",
        "stage": "register",
        "capability": "Reserve a whole table"
      }
    },
    {
      "key": "payments_ledger",
      "label": "Payments ledger",
      "function": "stewardship",
      "summary": "Money actually received, by any rail, recorded against the roster; a payment is paid only when money has arrived.",
      "purpose": "The chapter means to accept money by every vector its members use: card through a processor, wallets on that processor, peer apps, cheque and cash. Each rail is a row, so adding one is data, not a deploy. A payment reads paid only when a processor's webhook or a named officer records that the money arrived; a processor rail cannot be marked paid by hand; a refund lowers the seats paid for.",
      "serves": [
        "staff",
        "board"
      ],
      "reads": [
        "the payment rails, one row per rail",
        "the roster"
      ],
      "writes": [
        "payment rows in integer cents",
        "refunds",
        "the event's paid seats"
      ],
      "requires_component": "ledger",
      "accountable_office": "treasurer",
      "accountability_basis": "bylaws Art. IV s.10: the Chief Financial Officer, 'known also as Treasurer', is a required officer and the books are open to every director",
      "status": "next",
      "depends_on": "WO-2026-0917-LAOC-PRICING-001 task 6 (not done); card payments also need task 7, gated on the chapter's Stripe account",
      "framework": {
        "purpose": "Record money actually received for an event, by any rail, against the roster.",
        "member_sees": "Nothing of its own; the receipt belongs to ticket purchase.",
        "staff_sees": "Each payment with its rail, amount and who recorded it; refunds; the seats paid for.",
        "reads": [
          "the payment rails table",
          "the roster"
        ],
        "writes": [
          "payment rows in integer cents",
          "refunds",
          "paid seats on the event"
        ],
        "reuses": [
          "the integer-cents ledger the platform already keeps for gifts (named in Game Day's ticket-purchase framework)",
          "the cost model's rule that prices are set against the most expensive active rail"
        ],
        "ships_with": [
          "WO-2026-0917-LAOC-PRICING-001 task 6: payments ledger with rails as rows",
          "WO-2026-0917-LAOC-PRICING-001 task 7: Stripe, fail-closed, gated on the chapter's Stripe account (Treasurer's go-ahead 27 Sep)"
        ],
        "done_when": "A recorded payment raises the paid seats and a refund lowers them; a processor rail cannot be marked paid by hand; nothing reads paid until money has arrived."
      }
    },
    {
      "key": "raffle",
      "label": "Raffle",
      "function": "stewardship",
      "summary": "Sell item-raffle tickets in person, never online, and draw the winners from the ticket stubs, as Penal Code 320.5 allows.",
      "purpose": "In-person ticket sales on the ledger by stub number, and a hand draw from the stubs with an adult supervising. No internet sales and no 50/50. The Attorney General's written confirmation of registration comes first.",
      "serves": [
        "member",
        "staff"
      ],
      "requires_component": "ledger",
      "accountable_office": "events_chair",
      "accountability_basis": "the Events Chair runs the raffle for Army/Navy 2026 (facts_extracted.community.people_and_roles_for_army_navy)",
      "status": "modelled",
      "framework_ref": {
        "seed": "/gameday/stages.json",
        "stage": "ondeck",
        "capability": "Raffle"
      }
    },
    {
      "key": "gifts_and_receipts",
      "label": "Gifts and receipts",
      "function": "stewardship",
      "summary": "Record gifts already received (cheques, cash at the table, sponsor gifts) and receipt them. Not for selling tickets.",
      "purpose": "Chapters take cheques and cash. The platform already keeps a record-and-receipt ledger for gifts received, usable for sponsor gifts and donated prizes on the day; it processes no payment and sells no ticket. Raffle ticket money is a purchase, not a gift, and goes on the payments ledger. Sponsors register under their own role. No chapter page uses the gift ledger yet, so it is a framework here, not a live service.",
      "serves": [
        "member",
        "staff"
      ],
      "reads": [
        "not in the record"
      ],
      "writes": [
        "a gift record: integer cents for money, a description and no value for a donated item",
        "a receipt"
      ],
      "requires_component": null,
      "component_note": "not a composition component: the platform's record-and-receipt gift ledger",
      "accountable_office": "treasurer",
      "accountability_basis": "assigned by this edition",
      "status": "modelled",
      "framework": {
        "purpose": "Record gifts the chapter has already received (cheques, cash at the table, sponsor gifts, donated prizes) and receipt them.",
        "member_sees": "A receipt for a gift they made, such as a sponsorship or a donated prize (Game Day, stage Afterwards). A raffle ticket is a purchase and gets none.",
        "staff_sees": "not in the record",
        "reads": [
          "not in the record"
        ],
        "writes": [
          "a gift record: integer cents for money, a description and no value for a donated item",
          "a receipt"
        ],
        "reuses": [
          "the platform's record-and-receipt gift ledger, which has no checkout and handles no card"
        ],
        "ships_with": [
          "Game Day's Raffle framework names it for donated prizes; raffle ticket money goes on the payments ledger. No other schedule for it is in the record"
        ],
        "done_when": "not in the record"
      }
    },
    {
      "key": "financial_close",
      "label": "Financial close against the floor",
      "function": "stewardship",
      "summary": "Show the board, to the cent, how the event did against its break-even floor; a close the Treasurer signs.",
      "purpose": "Tickets, bar commission and sponsorships against venue, catering, insurance and the raffle prizes. The raffle's gross, its costs (at most 10%) and the charitable use of the rest are shown apart and never count toward break-even (Penal Code 320.5(b)(4)).",
      "serves": [
        "board"
      ],
      "requires_component": "ledger",
      "accountable_office": "treasurer",
      "accountability_basis": "Game Day's framework: 'a close the Treasurer signs'",
      "status": "modelled",
      "framework_ref": {
        "seed": "/gameday/stages.json",
        "stage": "after",
        "capability": "Financial close against the floor"
      }
    },
    {
      "key": "board_room",
      "label": "Board room",
      "function": "truth",
      "summary": "Draft, distribute for one-tap review, ratify and seal the minutes. Board members only.",
      "purpose": "The chapter's record of its own decisions: a draft goes to each director for one-tap review, decisions are recorded, the minutes are ratified at a following meeting and sealed. The June 10, 2026 minutes are the first ratified record; August's await ratification on 13 Oct; September's are not yet drafted.",
      "serves": [
        "board"
      ],
      "reads": [
        "minutes drafts",
        "the board roster"
      ],
      "writes": [
        "review requests to directors",
        "recorded decisions",
        "ratification and the sealed record"
      ],
      "requires_component": null,
      "component_note": "not a composition component: the board-minutes pipeline",
      "accountable_office": "secretary",
      "accountability_basis": "the Secretary keeps the minutes (WO-2026-0908-LINK-USNAAA-LAOC-001: 'a board room the Secretary actually uses')",
      "status": "live",
      "surface": "/board/",
      "evidence": "Seeded with the June 10 minutes as the first ratified record (September build plan step 6 DONE, WO-2026-0908-LINK-USNAAA-LAOC-001)."
    },
    {
      "key": "minutes_archive",
      "label": "Minutes archive",
      "function": "truth",
      "summary": "Every ratified set of minutes, in one place, public to members.",
      "purpose": "Once sealed, minutes leave the board room for the archive, where any member can read what the board decided.",
      "serves": [
        "member",
        "board"
      ],
      "reads": [
        "ratified minutes"
      ],
      "writes": [],
      "requires_component": null,
      "component_note": "not a composition component: the board-minutes pipeline",
      "accountable_office": "secretary",
      "accountability_basis": "the Secretary keeps the minutes",
      "status": "live",
      "surface": "/minutes/",
      "evidence": "Live (WO-2026-1012-LAOC-BOARD-001 facts_extracted.what_the_site_does_today: '/minutes/ minutes archive').",
      "event_suite_refs": [
        {
          "seed": "/gameday/stages.json",
          "stage": "after",
          "capability": "Minutes and board room"
        }
      ]
    },
    {
      "key": "attendance_report",
      "label": "Attendance report",
      "function": "truth",
      "summary": "Registered and attended, by affiliation: who actually showed up.",
      "purpose": "Link is the system of record for who shows up, as myUSNA is for who has paid dues. The attendance report is that record, by event and by affiliation, and is what the report to national will be made from.",
      "serves": [
        "staff",
        "board"
      ],
      "reads": [
        "the roster",
        "check-ins"
      ],
      "writes": [
        "the report"
      ],
      "requires_component": "checkin",
      "accountable_office": "events_chair",
      "accountability_basis": "assigned by this edition",
      "status": "live",
      "surface": "/console/",
      "evidence": "The console's report tab (Game Day, stage Afterwards).",
      "event_suite_refs": [
        {
          "seed": "/gameday/stages.json",
          "stage": "after",
          "capability": "Attendance report"
        }
      ]
    },
    {
      "key": "national_export",
      "label": "Export in national's format (myUSNA)",
      "function": "truth",
      "summary": "Report attendance and active membership to national without hand edits.",
      "purpose": "One export button producing the file national asks for, once national names its columns and cadence.",
      "serves": [
        "staff",
        "board"
      ],
      "requires_component": "checkin",
      "accountable_office": "secretary",
      "accountability_basis": "the Secretary carries the questions to chapter services (WO-2026-0908-LINK-USNAAA-LAOC-001 build_plan_pending_approval.human_only_capt[3]); who files the report is not in the record",
      "status": "modelled",
      "depends_on": "chapter services' answer on required columns and cadence (September build plan step 8: WAITING)",
      "framework_ref": {
        "seed": "/gameday/stages.json",
        "stage": "after",
        "capability": "Export in national's format (myUSNA)"
      }
    },
    {
      "key": "board_brief",
      "label": "Board brief",
      "function": "truth",
      "summary": "The board's working page for an event: the quotes, the budget, break-even and the decisions in front of the board.",
      "purpose": "The record the board decides from, kept as a live page rather than a sheet. Its numbers are the board's record and appear only there.",
      "serves": [
        "board"
      ],
      "reads": [
        "the vendor quotes of 7 Oct 2026 and the pricing record (WO-2026-0917-LAOC-PRICING-001)"
      ],
      "writes": [],
      "requires_component": null,
      "component_note": "not a composition component: a page",
      "accountable_office": "events_chair",
      "accountability_basis": "assigned by this edition; for Army/Navy 2026 the brief is kept by the Secretary, who runs the event (see the tenant file)",
      "status": "live",
      "surface": "/brief/",
      "evidence": "Live; rev 2 on 12 Oct 2026 (WO-2026-1012-LAOC-READINESS-001)."
    },
    {
      "key": "event_suite",
      "label": "Game Day on Link (the event suite)",
      "function": "truth",
      "summary": "An event's lifecycle from the first ticket to the report to national, with every capability marked live or modelled.",
      "purpose": "Six stages (Register, Confirm, Arrive, On deck, Run the day, Afterwards), each with what the member and the staff see; live capabilities open their surface, and every unbuilt one is a labelled framework rendered from the seed file. It is the build seed: a framework is built when development is ripe and is never shown as live.",
      "serves": [
        "board"
      ],
      "reads": [
        "/gameday/stages.json",
        "the event's public record (live counters)"
      ],
      "writes": [],
      "requires_component": null,
      "component_note": "not a composition component: a page rendering the seed",
      "accountable_office": "events_chair",
      "accountability_basis": "assigned by this edition; for Army/Navy 2026, the Secretary (see the tenant file)",
      "status": "live",
      "surface": "/gameday/",
      "evidence": "Live since 12 Oct 2026 (release 20261012T204756Z-c20100be, WO-2026-1012-LAOC-READINESS-001): 24 capabilities, 11 live and 13 modelled."
    },
    {
      "key": "ops_ledger",
      "label": "Operations ledger and device registry",
      "function": "truth",
      "summary": "Make the day replayable: who checked whom in, who sold which raffle ticket, from which device.",
      "purpose": "Every staff action recorded under the name of the person who took it, from an enrolled device.",
      "serves": [
        "staff"
      ],
      "requires_component": "ops_journal",
      "accountable_office": "events_chair",
      "accountability_basis": "assigned by this edition",
      "status": "modelled",
      "framework_ref": {
        "seed": "/gameday/stages.json",
        "stage": "run",
        "capability": "Ops ledger and device registry"
      }
    },
    {
      "key": "media_classes",
      "label": "Media sorted by class",
      "function": "truth",
      "summary": "Keep evidence, keepsakes and working material apart, each with its own retention.",
      "purpose": "No working file in the album and no keepsake deleted as working material.",
      "serves": [
        "member",
        "staff"
      ],
      "requires_component": null,
      "component_note": "not a composition component: the platform's media classes",
      "accountable_office": "secretary",
      "accountability_basis": "assigned by this edition: retention is a records duty",
      "status": "modelled",
      "framework_ref": {
        "seed": "/gameday/stages.json",
        "stage": "after",
        "capability": "Media sorted by class"
      }
    },
    {
      "key": "chapter_identity",
      "label": "The chapter's own host, sender and colors",
      "function": "future_and_identity",
      "summary": "laoc.link.onamerica.org, mail from laoc@link.onamerica.org, the chapter's navy and gold.",
      "purpose": "The chapter is a tenant with its own host, its own database, bucket, worker and API host, and its own sender; every link and email resolves to the chapter's identity. This is what makes the chapter's site the chapter's, and not a page on someone else's.",
      "serves": [
        "member",
        "staff",
        "board"
      ],
      "reads": [
        "the tenant's client row (client_LAOC0001): name, host, sender"
      ],
      "writes": [
        "the chapter's name, sender and host on every member-facing email and link"
      ],
      "requires_component": null,
      "component_note": "not a composition component: the platform's per-organisation brand resolution",
      "accountable_office": "president",
      "accountability_basis": "assigned by this edition; the question of the chapter's web domain was put to the President on 18 Aug 2026",
      "status": "live",
      "surface": "/",
      "evidence": "D1 (own host) and D6 (own database, bucket, worker, API host and sender) DONE; sender verified by real sends (September build plan step 5) (WO-2026-0908-LINK-USNAAA-LAOC-001)."
    },
    {
      "key": "member_profile",
      "label": "Member's own profile and store",
      "function": "future_and_identity",
      "summary": "Each registrant has their own encrypted store; members read and write their own profile, and erasure is one command.",
      "purpose": "A member's information belongs to the member. Each registrant gets a store of their own; the member reads and writes their profile through the chapter's API with their registration credential, opened from the My Event portal; erasing a member is one command.",
      "serves": [
        "member"
      ],
      "reads": [
        "the member's own store"
      ],
      "writes": [
        "the member's own store"
      ],
      "requires_component": null,
      "component_note": "not a composition component: per-person stores",
      "accountable_office": "secretary",
      "accountability_basis": "assigned by this edition: membership records",
      "status": "live",
      "surface": "/portal/",
      "evidence": "Per-person stores live for the chapter since 10 Sep 2026 (WO-2026-0908-LINK-USNAAA-LAOC-001 five_field.artifacts[29])."
    },
    {
      "key": "photo_album",
      "label": "Photo album",
      "function": "future_and_identity",
      "summary": "Photos from the day, uploaded by staff, visible to guests: the chapter's keepsakes.",
      "purpose": "What the chapter remembers of its gatherings, shared with the people who were there.",
      "serves": [
        "member",
        "staff"
      ],
      "reads": [
        "uploads"
      ],
      "writes": [
        "album photos"
      ],
      "requires_component": null,
      "component_note": "not a composition component: the photos module, switched on in the watch-party template",
      "accountable_office": "events_chair",
      "accountability_basis": "assigned by this edition",
      "status": "live",
      "surface": "/photo/",
      "evidence": "Live (WO-2026-1012-LAOC-BOARD-001 facts_extracted: '/photo/').",
      "event_suite_refs": [
        {
          "seed": "/gameday/stages.json",
          "stage": "ondeck",
          "capability": "Photo album"
        }
      ]
    },
    {
      "key": "membership_roster_import",
      "label": "Membership from myUSNA",
      "function": "future_and_identity",
      "summary": "Bring the chapter's myUSNA member list into Link so attendance reads member or not.",
      "purpose": "Membership is bought on myUSNA; Link is where members show up. Importing the chapter group's member export lets attendance show member versus non-member and lets lapsed members be nudged. This is Tier 1 of the reporting interface.",
      "serves": [
        "staff",
        "board"
      ],
      "reads": [
        "the myUSNA member export of the chapter group"
      ],
      "writes": [
        "the chapter's membership roster in Link"
      ],
      "requires_component": null,
      "component_note": "not a composition component: an import into the roster",
      "accountable_office": "secretary",
      "accountability_basis": "the Secretary holds myUSNA admin access (August 2026 draft minutes, via WO-2026-0908-LINK-USNAAA-LAOC-001 five_field.artifacts[24]) and is to check his group-admin rights (WO-2026-0908-LINK-USNAAA-LAOC-001 myusna_interface)",
      "status": "next",
      "depends_on": "national's answer on whether chapter group admins can export the member list",
      "framework": {
        "purpose": "Know member from non-member at the door and in the report, and nudge lapsed members.",
        "member_sees": "Nothing new; membership itself is bought on myUSNA.",
        "staff_sees": "Attendance split by member and non-member.",
        "reads": [
          "the myUSNA member export of the chapter group (a back-office export on national's platform)"
        ],
        "writes": [
          "the chapter's membership roster in Link"
        ],
        "reuses": [
          "the attendance report",
          "the console's roster"
        ],
        "ships_with": [
          "national's answer to: can chapter group admins export the chapter member list from myUSNA?",
          "the Secretary's check of his myUSNA group-admin rights"
        ],
        "done_when": "Attendance reports show member versus non-member correctly against a myUSNA export."
      }
    }
  ],
  "event_types": [
    {
      "key": "watch_party",
      "label": "Watch party",
      "purpose": "Members, families and guests watch a Navy game together. The chapter's largest gathering of the year is the Army/Navy watch party in December, in 2026 aboard Battleship IOWA in San Pedro with a lunch buffet, a bar and a raffle, West Point and Air Force alumni welcome. Smaller watch parties follow other Navy games (Navy-Air Force, Navy-Notre Dame).",
      "typical_capacity": "Army/Navy 2026: capacity 300, 280 seated on the covered fantail; 250 guests in 2025. The smaller watch parties: not in the record.",
      "template": "tmpl_watch_party (doors 11:00, capacity 300, photos on, sport-specific modules off)",
      "composition": "registration (rsvp), check-in, communications, the cost and price model (pricing) and seating (placement): the watch-party composition named in modules/composition.js",
      "done_when": "Attendance exported to national in its own columns, the books closed against the break-even floor, and the board's decisions recorded in sealed minutes (Game Day on Link, stage Afterwards)."
    },
    {
      "key": "range_day",
      "label": "Range day",
      "purpose": "A chapter day at a shooting range: a fun shoot and a competitive shoot, staggered; guests, families and parents clubs welcome; waivers required for all attendees.",
      "typical_capacity": "80 (Range Day, 5 Dec 2026)",
      "template": "not in the record",
      "composition": "not in the record",
      "done_when": "not in the record"
    },
    {
      "key": "board_meeting",
      "label": "Board meeting",
      "purpose": "The board's monthly business under Robert's Rules: attendance and quorum, motions and votes, and the minutes that record them.",
      "typical_capacity": "100 is the template's setting; quorum on 10 Jun 2026 was five directors present",
      "template": "tmpl_chapter_meeting (18:30, capacity 100)",
      "composition": "registration, check-in, communications, reporting and board minutes on; sport-specific modules off (cloned from the platform's investor-meeting template)",
      "done_when": "Attendance and quorum recorded; motions and votes recorded; minutes drafted from the record, distributed for one-tap review, ratified at a following meeting and sealed."
    },
    {
      "key": "luncheon",
      "label": "Luncheon",
      "purpose": "Welcoming new leaders: the Blue and Gold / Parents' Club Welcome Aboard luncheon (June 2026).",
      "typical_capacity": "not in the record",
      "template": "not in the record",
      "composition": "not in the record",
      "done_when": "not in the record"
    },
    {
      "key": "social",
      "label": "Social",
      "purpose": "Fellowship in person: the Tiki bar social, one of the four in-person meetings on the chapter's annual calendar.",
      "typical_capacity": "not in the record",
      "template": "not in the record",
      "composition": "not in the record",
      "done_when": "not in the record"
    }
  ],
  "vocabulary": {
    "layer": "industry",
    "resolution_order": "global > industry > format > tenant > template, each layer overriding only what it names (modules/composition.js resolveVocabulary)",
    "rule": "Each entry names a word the shared surfaces or the event record still carry from the platform's first tenant, and the word a chapter surface uses instead. Where a chapter has no such thing the chapter word is 'none': the label or field is hidden, not translated. The words being replaced appear in this map and nowhere else in this edition.",
    "map": [
      {
        "replaces": [
          "participant",
          "participants"
        ],
        "chapter_word": "guest, guests",
        "seen_on": [
          "the platform's global vocabulary (modules/composition.js)"
        ]
      },
      {
        "replaces": [
          "player",
          "players"
        ],
        "chapter_word": "member, members",
        "seen_on": [
          "/portal/",
          "/rsvp/",
          "/checkin/",
          "/_shared/staff-nav.js",
          "/_shared/vwio-auth.js"
        ]
      },
      {
        "replaces": [
          "course"
        ],
        "chapter_word": "venue",
        "seen_on": [
          "GET /api/events/:id (field)",
          "/register/",
          "/rsvp/",
          "/portal/",
          "/checkin/"
        ]
      },
      {
        "replaces": [
          "tee time",
          "tee_time"
        ],
        "chapter_word": "doors",
        "seen_on": [
          "GET /api/events/:id (field)",
          "/register/"
        ]
      },
      {
        "replaces": [
          "max_players"
        ],
        "chapter_word": "capacity",
        "seen_on": [
          "GET /api/events/:id (field)"
        ]
      },
      {
        "replaces": [
          "foursome",
          "foursomes"
        ],
        "chapter_word": "table, tables",
        "seen_on": [
          "/_shared/vwio-auth.js",
          "modules/composition.js format vocabulary"
        ]
      },
      {
        "replaces": [
          "pairings",
          "pairing",
          "pairings_published_at"
        ],
        "chapter_word": "seating (seating published at)",
        "seen_on": [
          "GET /api/events/:id (field)",
          "/_shared/staff-auth.js",
          "modules/composition.js component label"
        ]
      },
      {
        "replaces": [
          "scorecard"
        ],
        "chapter_word": "program",
        "seen_on": [
          "/checkin/ (a comment naming the portal)"
        ]
      },
      {
        "replaces": [
          "start_hole",
          "starting hole"
        ],
        "chapter_word": "table",
        "seen_on": [
          "/portal/ (assignment grid)"
        ]
      },
      {
        "replaces": [
          "holes",
          "hole"
        ],
        "chapter_word": "none",
        "seen_on": [
          "GET /api/events/:id (field), empty for chapter events",
          "/portal/"
        ]
      },
      {
        "replaces": [
          "cart",
          "cart_num"
        ],
        "chapter_word": "none",
        "seen_on": [
          "/portal/ (assignment grid)"
        ]
      },
      {
        "replaces": [
          "handicap",
          "hcp"
        ],
        "chapter_word": "none",
        "seen_on": [
          "/portal/ (profile drawer)"
        ]
      },
      {
        "replaces": [
          "grader",
          "grade"
        ],
        "chapter_word": "none",
        "seen_on": [
          "/portal/ (profile drawer)",
          "/_shared/staff-auth.js",
          "/_shared/staff-nav.js"
        ]
      },
      {
        "replaces": [
          "strokes",
          "score",
          "scoring"
        ],
        "chapter_word": "none",
        "seen_on": [
          "/portal/ (profile history)",
          "/_shared/vwio-auth.js"
        ]
      },
      {
        "replaces": [
          "scramble",
          "9-hole scramble"
        ],
        "chapter_word": "the event's own type: watch party, range day, board meeting, luncheon or social",
        "seen_on": [
          "/portal/ (format fallback)",
          "/_shared/staff-auth.js",
          "/_shared/staff-nav.js"
        ]
      },
      {
        "replaces": [
          "tournament",
          "golf tournament",
          "golf clinic"
        ],
        "chapter_word": "event",
        "seen_on": [
          "/portal/ (activity badge fallback)"
        ]
      },
      {
        "replaces": [
          "golf"
        ],
        "chapter_word": "none",
        "seen_on": [
          "/portal/",
          "/_shared/staff-auth.js",
          "/_shared/staff-nav.js",
          "/_shared/studio/app.js",
          "/_shared/vwio-auth.js"
        ]
      }
    ]
  },
  "offices_model": {
    "where": "link_org_offices and link_org_office_holders in the tenant's own database (workers/link-onamerica/lib/repos/offices.js)",
    "rule": "An office is a row: a title and the capabilities it grants, from a fixed vocabulary; a grant outside it is refused. A person, by their MHS identity, holds an office from 'since' until 'until'; ending a term keeps the record, so the chapter can always answer who held an office in a given year. Appointing someone writes their staff row as a projection of the office and never demotes. Appointing emails nobody: telling the holder is a separate, deliberate act.",
    "capability_vocabulary": {
      "org.admin": "everything in the organisation; implies every capability below",
      "studio.view": "read the event studio: model, costs, deck, roster, ledger",
      "pricing.edit": "cost lines, tiers, pricing configuration",
      "placement.edit": "deck layout and seating guests",
      "ledger.edit": "record and refund payments",
      "offices.manage": "define offices and appoint holders"
    },
    "live_state": "Five offices are defined and held in the laoc tenant, each holder with an MHS identity, provisioned 18 Sep 2026 through the live API as the Secretary; no holder has been emailed (WO-2026-0917-LAOC-PRICING-001). The Treasurer's office grants org.admin. The grants of the other four offices are rows in the tenant's database and are not in the record this edition was written from."
  },
  "offices": [
    {
      "code": "president",
      "title": "President",
      "bylaws": "a required officer (Art. IV s.10: President, Secretary and Chief Financial Officer)",
      "duties": "In the record: set the Army/Navy milestones for September, October and 1 November and handed the event to the officer who runs it (15 Aug 2026); was asked the chapter's web-domain question (18 Aug 2026); holds the chapter's Zoom account, renewed annually (August 2026 draft minutes). The President's further duties under the bylaws are not in the record.",
      "capabilities_in_the_record": "not in the record",
      "reference_holder": "Paris Scott (2026-2027)"
    },
    {
      "code": "vice_president",
      "title": "Vice President",
      "bylaws": "not in the record",
      "duties": "In the record: the likely day-of host for Army/Navy 2026, the President being out of town that weekend; owned the Range Day details as of 8 Sep 2026. The office's duties under the bylaws are not in the record.",
      "capabilities_in_the_record": "not in the record",
      "reference_holder": "Brian DeJarnett (2026-2027)"
    },
    {
      "code": "secretary",
      "title": "Secretary",
      "bylaws": "a required officer (Art. IV s.10)",
      "duties": "Keeps the chapter's record: drafts the minutes, distributes them for one-tap review, carries them to ratification and seals them; keeps the board room and the minutes archive; runs the meeting record under Robert's Rules. Appoints office holders through the tenant's API and tells them, a separate act. Named on the IOWA acceptance as the chapter's signer. Under Art. VII s.1 a board resolution must authorize the signer; the Secretary reported on 18 Sep 2026 that the Board authorized him to sign any contract within ten percent of 2025's cost for the event (the resolution text is not in the record, and whether the 2026 IOWA agreement falls inside it was unchecked). Carries the three questions for national's chapter services. In 2026 the Secretary also runs the Army/Navy watch party (handed over 15 Aug).",
      "capabilities_in_the_record": "not in the record",
      "reference_holder": "Ron Helms (2026-2027)"
    },
    {
      "code": "treasurer",
      "title": "Treasurer (Chief Financial Officer)",
      "bylaws": "a required officer: the Chief Financial Officer, 'known also as Treasurer' (Art. IV s.10); nothing restricts the office's access and the books are open to every director",
      "duties": "Keeps the chapter's money and its books. In the record: approved a chapter-owned Stripe account on 27 Sep 2026, the precondition for selling tickets by card; in Game Day's modelled framework, signs the close of an event's books against its floor.",
      "capabilities_in_the_record": [
        "org.admin"
      ],
      "capabilities_basis": "'Per CAPT, the Treasurer office now grants org.admin (live, MHS-00015.A-T5P7)' (WO-2026-0917-LAOC-PRICING-001 audit.bylaws_2026_09_18.treasurer)",
      "reference_holder": "Michael Seaver (2026-2027; Treasurer for 30+ years)"
    },
    {
      "code": "events_chair",
      "title": "Events Chair",
      "bylaws": "not a bylaws officer; the board appoints it under Art. IV s.3 ('such other Officers as the business of the Chapter may require')",
      "duties": "Coordinates the chapter's events. In the record: events coordinator for Army/Navy 2026 and runs its raffle; holds the canonical registration addresses for the myUSNA post (17 Sep 2026).",
      "capabilities_in_the_record": "not in the record",
      "reference_holder": "Adrian Montecinos (2026-2027; outgoing President)"
    },
    {
      "code": "blue_and_gold",
      "title": "Blue and Gold",
      "bylaws": "not in the record",
      "duties": "Blue and Gold Officers carry the Academy's outreach and are members of the chapter; the record shows them with the Parents' Club at the Welcome Aboard luncheon (June 2026). Whether the chapter seats a Blue and Gold office on its board, who would hold it and what it would grant are not in the record.",
      "capabilities_in_the_record": "not in the record",
      "reference_holder": "not in the record"
    }
  ],
  "reporting": {
    "mandate": "The national board of trustees made myUSNA.com the official platform for reporting active chapter membership. myUSNA is the national Alumni Association and Foundation's community platform, run on Hivebrite. Membership is purchased on myUSNA, so myUSNA is the system of record for who is a dues-paid member; Link is the system of record for who actually shows up. The interface national wants is the join of those two facts.",
    "to_whom": "the national Alumni Association, through myUSNA.com",
    "cadence": "not in the record (asked of chapter services)",
    "columns": "not in the record (asked of chapter services)",
    "what_national_must_grant": "API access is not a chapter-level thing: Hivebrite's Admin API is sold at the Premier or Enterprise tier and issued to the platform's owner, the national Association and Foundation, not to chapters.",
    "tiers": [
      {
        "tier": 0,
        "name": "No permission needed",
        "what": "Link's canonical registration link advertised on myUSNA, the flyer and email; Link's attendance report exported in national's column shape.",
        "status": "next",
        "status_text": "The registration link is live and the Events Chair has had it since 17 Sep 2026; whether it is posted on myUSNA is not in the record. The export waits on national naming its columns (September build plan step 8: WAITING).",
        "services": [
          "registration",
          "attendance_report",
          "national_export"
        ]
      },
      {
        "tier": 1,
        "name": "National's cooperation",
        "what": "The myUSNA member export of the chapter group imported into Link, so attendance shows member or non-member and lapsed members get a nudge.",
        "status": "next",
        "status_text": "Waiting on national: whether chapter group admins can export the member list.",
        "services": [
          "membership_roster_import"
        ]
      },
      {
        "tier": 2,
        "name": "An API credential from national",
        "what": "Hivebrite Admin API (users, groups, events, memberships) on OAuth2 client credentials issued by national; the pitch is 'we will push our event and our attendance report into myUSNA for you'.",
        "status": "next",
        "status_text": "Waiting on national: whether a chapter can be issued a credential scoped to its group, or national would accept a push on its own credential.",
        "services": []
      },
      {
        "tier": 3,
        "name": "Active membership as a capability",
        "what": "Active member derived from myUSNA membership plus Link attendance, reported on national's cadence, with the board room, events and comms in Link and myUSNA fed rather than hand-updated.",
        "status": "next",
        "status_text": "The long game: the alumni-association edition, after tiers 0 to 2.",
        "services": []
      }
    ],
    "questions_for_national": [
      "The active-membership report: required columns, cadence, and delivery channel (upload, email or a myUSNA form)?",
      "Can chapter group admins export the chapter member list from myUSNA?",
      "Can a chapter be issued a Hivebrite API credential scoped to its group, or would national accept a push from us on national's credential?"
    ],
    "questions_status": "Still open as of 12 Oct 2026 (decision D5). The June 2026 minutes recorded the same as an open question: 'MyUSNA is reporting hub; open question for expectations and how we wish to proceed'."
  },
  "tables": [],
  "migrations": [],
  "modules": [],
  "column_deltas": {},
  "deltas_note": "None. A chapter's events use community.events' tables and columns; the venue is carried in the event column the vocabulary map renames, and the public card already reads it as venue. The board, office and studio tables a chapter uses (link_board_meetings, link_board_members, link_org_offices, link_org_office_holders, the studio's seat and pricing tables) are shared by every tenant on the worker and belong in community.events' row; reconciling that row is the refactor ticket's work, not this edition's.",
  "doctrine": {
    "purpose_first": "Every entry says what it is, what it is for, who is accountable and how we know. A reader who knows nothing of the chapter should be able to state its purpose, its year, its officers, its reporting duty and what each service is for from this file alone.",
    "no_lying_systems": "Nothing is shown as working that is not. Live means running on the chapter's site today at a surface that exists. Modelled means a framework in eight fields, the build seed, never shown as live. Next means queued behind a decision or dependency the framework names. A service with no surface is never live.",
    "sovereign": "The chapter owns its stores: its own database, bucket, worker and API host, and each member their own store. This edition names no store; the tenant names its own.",
    "emitted": "A tenant is born from this edition by the emitter (scope_chain resolve, then emit), never hand-built. This file is the edition's data; it changes no emitter code.",
    "delta_only": "A tier names only its delta and inherits the rest. Field names follow scope_chain.py TIERS where the concept exists; fields TIERS does not have are added, none renamed.",
    "sources": "Every person, date, number and decision traces to provenance. Where the record is silent the field says 'not in the record'. Pricing numbers are not restated here; they are the board's record on the brief."
  },
  "provenance": [
    {
      "source": "WO-2026-1012-LAOC-BOARD-001 prior_art.facts_extracted",
      "gave": "the community, governance, calendar, people and roles, decisions D1-D6, the September build plan with 12 Oct statuses, the five functions"
    },
    {
      "source": "WO-2026-0908-LINK-USNAAA-LAOC-001",
      "gave": "the chapter record: June 2026 minutes (Proton Sent 810) and August 2026 draft minutes (INBOX 6970) as carried there, the myUSNA interface tiers and questions, the registration roles, live evidence (five_field.artifacts), event templates, the event link service"
    },
    {
      "source": "WO-2026-0917-LAOC-PRICING-001",
      "gave": "offices and their live provisioning, the bylaws audit (Art. IV s.3, s.10; Art. VII s.1), the Treasurer's org.admin grant, the payments ledger (task 6) and rails as rows (D8), the studio's live status"
    },
    {
      "source": "WO-2026-1012-LAOC-READINESS-001",
      "gave": "brief rev 2 and Game Day on Link, release 20261012T204756Z-c20100be"
    },
    {
      "source": "AE-2026-0920-MHS-WEBOS-FRAMEWORK-001",
      "gave": "the five functions (operations, coordination, stewardship, truth, future and identity) and the Edition, Tenant, Office and Vocabulary classes"
    },
    {
      "source": "hascom/providers/scope_chain.py TIERS",
      "gave": "the field names: scope, parent, industry_id, services, event_types, tables, migrations, modules, column_deltas"
    },
    {
      "source": "workers/link-onamerica/modules/composition.js",
      "gave": "the composition components and the vocabulary layers"
    },
    {
      "source": "workers/link-onamerica/lib/repos/offices.js",
      "gave": "the office model and the capability vocabulary"
    },
    {
      "source": "/gameday/stages.json",
      "gave": "the frameworks every modelled service refers to, by stage id and capability name"
    },
    {
      "source": "GET https://api.laoc.link.onamerica.org/api/orgs/laoc and /api/events/evt_LAOC_ARMYNAVY_20261212, read 12 Oct 2026",
      "gave": "the upcoming events and the event record's field names"
    },
    {
      "source": "the chapter site's own files (.hascom_deploy/laoc-onamerica-link)",
      "gave": "every surface path, and the words the shared surfaces still carry"
    }
  ]
}
