Where the topic system stands today: what readers can already use on the draft site, what is built but not yet connected, and the decisions we need from VLCT to finish it.
The migration carried over every topic tag from Drupal. On top of those tags we have built a subject tree that groups them into twelve areas, and that tree already powers the topic filter in the draft Resource Library. The remaining work is to connect the tree to the topic overview pages and give every topic a proper landing spot with a sidebar.
Topic filter in the Resource Library · topic overview pages with their resource lists · nine hub pages with section sidebars.
The tree does not yet know which overview page belongs to which subject, so most topic pages have no sidebar and the 89 plain topic archives are orphans.
Seven decisions in the Decisions section, each with its own handover page, plus a handful of naming questions (what does VOSHA stand for; how to label Acrisure).
Most of the confusion on this subject comes from three separate things sharing one name. They are all real, they all exist on the draft site today, and the job is to connect them.
The labels attached to each resource, news item, FAQ and page. Migrated as-is from Drupal. Each has an automatic listing at /topic/<name>/.
A hierarchy that groups the tags: Finance & Taxes › Property Taxes › Tax appeals. One tag can sit in two branches (Social Media is under both Governance and Technology). Drives the library's topic filter.
Live on draft site Approved 31 AugThe hand-written pages VLCT staff maintain, such as Town Meeting or Property Taxes. Migrated with their content and their resource lists.
Migrated 9 of ~30 are hubsOf 70 tree nodes, about 34 have an obvious overview page, about 10 have two candidates, and 26 have none. Five of those 26 are large subjects with no page at all:
| Subject | Tagged items | Page today |
|---|---|---|
| Housing | 314 | none |
| Energy & Environment | 244 | none |
| Economic & Community Development | 160 | none |
| Disability Access (ADA) | 109 | none |
| Transportation | 107 | none |
Until a page exists, the plan gives these subjects a sidebar on their automatic tag listing, so every subject has a landing spot.
Nine hubs have one. The other ~21 overview pages get a department sidebar (Legal Support or Insurance) or nothing. The 89 automatic tag listings at /topic/… render the library shell with no sidebar and are linked from nowhere. (The prototype, by contrast, makes /topic/… the main topic page for every node, so the two sites currently disagree about what that address is for.)
The new resource page footer prints the topic name as a heading on roughly 4,700 resource pages. 17 tags start with an in-house acronym (PACIF, VERB), three start with "ADVOCACY:", eight carry a "- Legal" or "- Operational" suffix. Readers who are not the person who buys the insurance will not decode "PACIF VOSHA OSHA".
37 of 89 names read correctly as a heading today/all-topics/ is a 29-link icon grid copied from Drupal. Two links are dead on the draft site (Grants & Funding moved; Public Works Safety Briefs is a draft). The plan regenerates it from the tree so it cannot drift again.
"Executive session" and "Elections & Voting" exist in the tree but roll up no tags. "Infrastructure" appears twice (under Public Works, and as the Housing & Infrastructure area). Federal Funding has two competing landing pages. All are small data edits once VLCT confirms the direction.
The same subject on the current site, the WordPress draft and the design prototype. The draft is where the real content lives; the prototype shows the intended look and navigation.
| Subject | Current site (Drupal) | WordPress draft | Design prototype | Status |
|---|---|---|---|---|
| Town Meeting overviewthe page that started this work (#65) | /topics-all/town-meeting200 | /topics-all/town-meeting/200 | /topic/town-meeting (library filter)SPA | hub lists rebuilt, sidebar live |
| Property Taxes overviewhub with four child subjects in the tree | /topics-all/property-taxes200 | /topics-all/property-taxes/200 | /topic/property-taxes (library filter)SPA | hub |
| Grants & Funding overviewmoved under Municipal Operations Support; old link on All topics is dead | /grants-and-funding200 | /municipal-operations-support/grants-and-funding/200 | /topic/grants-funding (library filter)SPA | hub old path needs redirect |
| Resource Library, filtered by topicwhere the 12-area tree is already in use | /resource-library200 | /resource-library/200 | /resource-librarySPA | live 12 areas instead of 87 checkboxes |
| All topics index29-link icon grid; two dead links on the draft | /all-topics200 | /all-topics/200 | — | hand-maintained regenerate from tree (decision 6) |
| Housing, a large subject with no page314 tagged items; only the automatic tag listing exists | — | /topic/housing/200 | /topic/housing (library filter)SPA | orphan listing gets a sidebar in phase 3 |
| A resource page footerwhere a topic name becomes a heading ("More about …") | — | /resource/24-v-s-a-section-4302/200 | — | names not ready decision 5 |
| Prototype with the full 70-node treebranch preview built today; production prototype still has the 61-node tree | — | — | preview: /topic/housing (library filter)SPA | preview Housing now has a topic page in the prototype |
Link checks run 17 September 2026. The prototype is a single-page app, so every address answers; its topic pages use sample data, not VLCT's full content. "SPA" marks those links.
The live tree as it exists on the draft site today, with the tags each node gathers and the overview page we would attach to it. Counts are published resources / all published items. Click a node to open it; tag chips open that tag's listing on the draft site.
Each of these is a genuine editorial call, not a technical one. We have a recommendation for every one so the meeting can be a yes/no rather than a discussion from scratch.
Confirm the twelve-area tree on the draft site is the structure going forward, and retire the prototype's earlier, incomplete version.
Stay as a page (URLs unchanged, survives a re-migration) and be admitted to the Resource Library as a "Topic overview" card pinned first for its topic. Converting to a resource stays open as a later one-script step.
On the tree node (one screen shows the whole map) or on the page (editors find it where they edit content).
Keep every legacy path as it is (/topics-all/town-meeting), or move to a tidy /topics/finance-taxes/property-taxes/ scheme with redirects.
Six pure renames need no re-tagging (for example "ADVOCACY: VLCT's Municipal Policy" → "Municipal Policy", "Economic & Community Development" → "Economic and Community Development"). Merging the eight "- Legal / - Operational" suffix tags into their parents does re-tag content. Is the Legal/Operational split something staff use?
Regenerate it from the tree (12 areas with their children and icons), or keep the hand-picked 29-link grid and fix its two dead links.
Hub sidebars list hand-picked resources (7 of 133 for Town Meeting). Keep curation, and add an automatic "All 133 resources tagged Town Meeting" link at the bottom of each group?
The prototype only shows a topic as a filtered library. The draft site's hub pages (overview text, curated sidebar, resource list) have no prototype counterpart. Approve the hub page as the design, or ask for a prototype treatment of one topic page first.
Carried over from the rollup review (#32), none block anything (handover page): Social Media filed under both Governance and Technology (confirm); retire the "Municipal Assistance Center" tag since the Department filter covers it; Case Law and VLCT RFP (dormant: retire or leave); four low-confidence placements (First Amendment, Surveys and Research, Municipal Operations and Services, Solid Waste).
Full inventory of tags, tree, pages and sidebars; seven questions above. Written 11 Sep. One question settled, six for this meeting.
Resolve the two empty nodes, the double Infrastructure, the root that carries a tag directly, the placement questions and the six renames. Every edit is one node in wp-admin and reversible.
Add a "landing page" field to each tree node, fill it from the draft mapping in the explorer above, retire the stub pages with redirects, mark every linked page as a hub automatically.
Overview pages, their curated children and the automatic tag listings all get the same branch sidebar from the tree. Overview pages appear in the Resource Library as "Topic overview" cards, pinned first for their topic.
Smaller than it looks: 26 of 28 pages already carry VLCT's own resource picks. A script turns those into curated sidebar lists; staff prune rather than compose.
"All topics" regenerated from the tree; the mega menu's "Browse by topic" links go live to the 12 areas; breadcrumbs follow the tree.
Merge suffix tags and the three overlapping groups only if VLCT says the Legal/Operational split is not needed. Done last so the filter does not shift twice.
Redirect map for retired stubs; one page per area × landing, child, listing = 36 checks plus the index and menu; client walk-through by area.
Every change made while preparing this report is tracked in a GitHub issue that records what was done and the exact step to reverse it. Nothing here touches vlct.org, and nothing was deployed to the draft site today; code changes stay on review branches until Viv promotes them.
| Issue | What it covers | Phase | Status |
|---|---|---|---|
| #81 | Umbrella: this report, the decisions, and every sub-issue | — | tracking |
| #82 | Tree tidy-up: empty nodes, root carrying a tag, Infrastructure twice, Technology one level too deep | 1 | needs VLCT |
| #83 | Link each tree node to its overview page; seed from the draft mapping | 2 | built, 31 linked locally |
| #84 | One branch sidebar for landing pages, curated children and tag listings | 3 | built, needs visual QA |
| #85 | Overview pages in the Resource Library as "Topic overview" cards, pinned first | 3 | after #83 |
| #86 | Glossary expansions for PACIF, VERB, CHIP, ARPA and friends | 6 (early) | built, on a branch |
| #87 | All-topics: two dead links now; regenerate from the tree after decision 6 | 5 | part A built part B needs VLCT |
| #88 | Mega menu "Browse by topic" becomes real links | 5 | built, on a branch |
| #89 | Federal Funding has three landing pages; pick one | 2 | needs VLCT |
| #90 | Curated sidebars for the ~21 non-hub pages, seeded from their own resource lists | 4 | after #83 |
| prototype #102 | Bring the prototype's topic tree up to the 70-node WordPress tree | — | agent working |
| When | What | Where | Undo | Issue |
|---|---|---|---|---|
| 17 Sep 09:35 | Created the report hosting: private repo vivwebsolutions/vlct-reports with GitHub Pages, and Cloudflare Pages project vlct-reports. Both carry noindex. | GitHub · Cloudflare | gh repo delete vivwebsolutions/vlct-reports · wrangler pages project delete vlct-reports | #81 |
| 17 Sep 09:38 | Removed a stray Cloudflare Worker that the wrangler CLI created as a side effect while making the Pages project. | Cloudflare | Nothing to undo; it was never referenced. | #81 |
| 17 Sep 09:52 | Filed the umbrella issue and nine sub-issues covering phases 1–5 of the plan, each with its own undo step. Filed one issue on the prototype repo. | GitHub issues | Close the issues. | #81, #82–#90, prototype #102 |
| 17 Sep 09:55 | Started five implementation agents on the agent-ready tickets: node → page link (#83), branch sidebar (#84), glossary expansions (#86), All-topics dead links + mega-menu links (#87, #88), prototype tree sync (#102). They work on separate git branches and do not deploy to the draft site. | Local worktrees | Delete the branch. Any data written to the local database is by a script with a --revert switch. | #83, #84, #86, #87, #88, #102 |
| 17 Sep 10:12 | Prototype topic tree brought up to the WordPress tree: 61 → 70 nodes, 56 → 86 of 89 tags. Deployed as a branch preview; the production prototype is unchanged. Also added an export script in the migration repo so the two cannot drift again. | Prototype branch <code>chore/topics-tree-sync</code> · migration branch <code>topics-export</code> | Delete the two branches; the preview deployment can be deleted or ignored. | prototype #102 |
| 17 Sep 10:20 | Glossary expansions for topic acronyms: 11 entries seeded on the local draft (PACIF, VERB, CHIP, ARPA, VEM, OSHA, DPW, RFP, MAC and two composites) plus a display-name rule the theme uses for headings, chips and filter labels. Result: 39 tags show their tree label, 10 their glossary name, 40 stay as-is; only Acrisure, CHIP and VOSHA remain flagged for VLCT. | Branches <code>topic-glossary</code> and <code>topic-glossary-resource-single</code> · local database only | Run the seed script with revert (deletes exactly those 11 entries); do not merge the branches. | #86 |
| 17 Sep 10:22 | All-topics page: the two dead tiles fixed on the local draft (Grants & Funding now points at the moved page and has a pinned redirect; Safety Briefs points at the workplace-safety listing until VLCT decides whether to publish the draft resource). Previous page content is kept in a hidden field. | Branch <code>topic-nav-links</code> · local database only | Run the fix script with revert; it restores the stored content. | #87 |
| 17 Sep 10:22 | Mega menu "Browse by topic" now renders the 12 areas from the tree as real links with live counts that match the Resource Library filter. | Branch <code>topic-nav-links</code> · theme code only | Do not merge the branch. | #88 |
| 17 Sep 10:25 | Each tree node can now point at its overview page. A new "Landing page" field on tree nodes, helper functions for the theme, and a seed script that linked the 31 unambiguous nodes on the local draft (9 existing hubs + 22 single-candidate pages). 16 nodes are left for a human because they have two candidates or only a placeholder page; 23 nodes have no page and fall back to their tag listing. | Branch <code>topic-landing-link</code> · local database only | Run the seed script with revert; it clears exactly the links it wrote (logged by node). | #83 |
| 17 Sep 10:35 | One branch sidebar for every topic surface: overview pages, their curated children and the automatic tag listings now get the same sidebar built from the tree, titled with the subject area, with an "All N resources tagged …" link per group and breadcrumbs that follow the tree. Verified against the local data in ten scenarios; needs a visual pass on the draft site before it ships. | Branch <code>topic-branch-sidebar</code> · theme code only | A one-line switch turns it off without a deploy; or do not merge the branch. | #84 |
#32 rollup approval #62 naming audit #65 topic-page lists #42 hub pilot #47 sibling-hub IA #51 sidebar coverage #67 Overview rows #12 role filter