Skip to content

CAP-WEB-WEB-009Provide site navigation in the right page locations

Markdown

CAP-WEB-WEB-009

Provide site navigation in the right page locations

Markdown
  • DocumentDraft
  • Product intentConfirmed
  • ImplementationObserved

KindCapabilityProduct areaWebsitesModuleWebsites, content and the portal runtimeRevision1

Read atservices-websites 5fc6823crhythm-web 38aef7d2react-console baf6dae3

The Formal Contract

The narrative above explains; the sections below are authoritative — the rules, scenarios and tests this document binds.

Outcomes
Provide site navigation in the right page locations.
Surfaces
consoleapi
Intent sources
services-websites:docs/milestones/WEB-M2-operate-a-site.md#D1services-websites:docs/milestones/WEB-M2-operate-a-site.md#D3services-websites:docs/milestones/plans/WEB-M2-operate-a-site-plan.md#3. How it works for the person

Controls

42 controls apply, from the corpus control catalogue.

TC-AVL-002 TC-AVL-003 TC-AZ-001 TC-AZ-002 TC-AZ-003 TC-AZ-004 TC-AZ-006 TC-CHG-001 TC-CHG-002 TC-CHG-003 TC-CHG-004 TC-CHG-007 TC-CRY-001 TC-CRY-002 TC-CRY-003 TC-CRY-004 TC-DAT-001 TC-DAT-004 TC-IAM-001 TC-IAM-002 TC-IAM-004 TC-IAM-005 TC-IAM-006 TC-LOG-001 TC-LOG-002 TC-LOG-003 TC-LOG-004 TC-LOG-005 TC-MON-001 TC-MON-003 TC-MON-004 TC-PI-001 TC-PI-003 TC-PI-005 TC-SEC-001 TC-SEC-002 TC-SEC-003 TC-SEC-004 TC-TEN-001 TC-TEN-002 TC-TEN-003 TC-TEN-004

Permissions

KeyChecked atScope
websites.website-changes.readapitenant
websites.content.editapitenant
websites.content.publishapitenant

Business Rules

15 rules, 14 to be proved before approval. A rule's product intent is derived from its origin: 15 confirmed by a product decision, the rest inheriting this capability's confirmed.

IdRuleKindEnforced atProvenance
01must prove
Confirmed
Menus require a name and a lowercase site-unique key, and items carry labels up to 200 characters plus a site page, URL or no link and a new-window choice.
no proof recorded yet
validationapi, servicetest
services-websites:modules/content/app/tests/site-operations.test.ts#refuse a key the site already uses, and an item that links to another site’s page
02must prove
Confirmed
A menu accepts at most 200 total items across no more than four nested levels and rejects repeated item identities.
no proof recorded yet
validationapi, service, consoletest
03must prove
Confirmed
URL links must begin with an allowed web, relative, mail, phone or fragment prefix, and each link type accepts only its required fields.
no proof recorded yet
validationapitest
04must prove
Confirmed
Menu-item visibility remains reserved and any supplied visibility rule is rejected.
no proof recorded yet
validationapitest
services-websites:modules/content/tests/unit/aws/api/content-workspace-routes.spec.ts#refuse an item that sets a visibility, which WEB-M5 reserves
05must prove
Confirmed
Saving a menu updates its draft while preserving published items, with both versions available for inspection when they differ.
no proof recorded yet
lifecycleservicetest
services-websites:modules/content/app/tests/site-operations.test.ts#save a draft over a published menu without touching what is live, and show both
06must prove
Confirmed
Menu publication requires publish-content permission and makes the draft live with a site-refresh request.
no proof recorded yet
permissionapi, servicetest
services-websites:modules/content/app/tests/site-operations.test.ts#are published only for a caller with publish, and then are live
07must prove
Confirmed
Deletion rejects menus referenced by site defaults or page overrides.
no proof recorded yet
validationservicetest
services-websites:modules/content/app/tests/site-operations.test.ts#are not deleted while the settings or a page still use them
08must prove
Confirmed
Page templates declare named navigation places rendered as menus, breadcrumbs or section navigation; an absent layout declaration falls back to one standard page template.
no proof recorded yet
policyservicetest
services-websites:modules/content/app/tests/site-operations.test.ts#lists the layouts of the site’s manifest with the menu places they declare
09must prove
Confirmed
A page-specific menu choice takes precedence over the site's default for the same place.
no proof recorded yet
calculationservicetest
10must prove
Confirmed
Menu access rejects reads and mutations addressed through a different site.
no proof recorded yet
invariantservicetest
services-websites:modules/content/app/tests/site-operations.test.ts#cannot be read, saved, published or deleted through another site
11must prove
Confirmed
Menu publication and deletion record the site and operation on the security trail without recording menu content.
no proof recorded yet
policyservicetest
services-websites:modules/content/tests/integration/services/site-content/site-content.integration.spec.js#writes the trail for a published menu, deleted menu and published settings, naming the site and the operation but no content
12must prove
Confirmed
Page-template lookup reads the followed template's production-release manifest and updates the content mirror when the manifest differs.
no proof recorded yet
calculationservicetest
services-websites:modules/content/tests/integration/services/site-content/template-manifest.integration.spec.js#sends the manifest of the site’s template folder at the production commit with the page templates read
13
Confirmed
Page menu overrides currently require editors to enter the internal place key as text.
policyservicedocumented
14must prove
Confirmed
The navigation migration maps primary and main lists into main menus and footer lists into footer menus, preserving Draft status.
no proof recorded yet
calculationservicetest
services-websites:modules/content/app/tests/navigation-to-menus.test.ts#maps the old primary or main menu to main, and footer to footer
15must prove
Confirmed
The menu-list read limits each draft and published query to 100 menus.
no proof recorded yet
validationserviceobserved

Scenarios

IdGivenWhenThenProvenance
01The page template offers main and footer navigation locations.An editor prepares a nested Member menu and a publisher selects its published version as the main default.Pages without an override show that nested menu in the main location.test

Edge Cases

IdGivenWhenThenProvenance
02Site Settings references a menu as its footer default.An administrator requests that menu's removal.Deletion fails while the footer reference remains.test
services-websites:modules/content/app/tests/site-operations.test.ts#are not deleted while the settings or a page still use them

The Markdown files under specs/ in rhythmsoftware/rhythm-v2-docs are the canonical source of truth. This reader is a generated, read-only projection of them.