Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 12 additions & 1 deletion .github/workflows/pull-request.yml
Original file line number Diff line number Diff line change
Expand Up @@ -24,10 +24,21 @@ jobs:
run: npm ci

- name: Build, validate, and test
run: npm run check
run: |
set -o pipefail
npm run check 2>&1 | tee check.log
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

- name: Preserve check failure log
if: failure()
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7, node24
with:
name: check-failure-${{ github.sha }}
path: check.log
retention-days: 7
if-no-files-found: error

- name: Install Chromium release dependency
run: npx playwright install --with-deps chromium

Expand Down
15 changes: 15 additions & 0 deletions docs/research-method.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,18 @@
# Research method

Sources and claims are stored in `src/_data/research`. Stance classification is editorial review, not automated metadata inference. Missing support or dissent must render as a documented `hmmm` gap.

## Article Lab contact structure

The eight Rights Article Labs use `src/_data/article_lab.json`. Every record must include:

- a reductio ad absurdum test in both directions plus a bounded reading;
- at least four worst practices and four best practices;
- applications for medical, construction, engineering, agriculture, jurisprudence, transportation and distribution, child craft, information systems, emergency response, hospitality and sanitation, and community governance;
- at least one reviewed claim linked to a source with an explicit evidence boundary.

## Usage guidance

Add or revise operational applications in `article_lab.json`. Add research evidence separately in `sources.yml` and `claims.yml`; do not place an uncited empirical claim inside an application paragraph. Run `npm test`, `npm run build`, `npm run test:generated`, and `npm run test:browser` before publication.

An application is a bounded hypothesis about how an Article might constrain practice in a domain. It does not supersede domain standards, professional duties, law, safety rules, or the canonical text. Reductio sections deliberately test destructive overextension and destructive absolute rejection; neither is presented as the endorsed reading.
274 changes: 274 additions & 0 deletions src/_data/article_lab.json

Large diffs are not rendered by default.

99 changes: 95 additions & 4 deletions src/_data/research/claims.yml
Original file line number Diff line number Diff line change
@@ -1,5 +1,14 @@
- id: article-one-food-insecurity-health
article: rights-and-definitions-of-the-way.article-one
stance: support
status: defended-component
claim: "Food insecurity is associated with adverse health outcomes, and reducing food insecurity is a material health intervention rather than merely charitable preference."
source_ids:
- gundersen-ziliak-2015-food-insecurity
limitation: "The review supports a survival floor but does not determine contribution rules, exclusions, or allocation under acute scarcity."

- id: article-two-autonomy-and-duty
article: rights.article-two
article: rights-and-definitions-of-the-way.article-two
stance: support
status: defended-component
claim: "Necessary health or survival work is more likely to be sustained when people experience volition, competence, and supportive connection rather than pressure or coercion."
Expand All @@ -8,7 +17,7 @@
limitation: "This supports the page's autonomy-preserving interpretation, not every duty named in the canon."

- id: article-two-sanitation-is-health-work
article: rights.article-two
article: rights-and-definitions-of-the-way.article-two
stance: support
status: evidence-informed
claim: "Safe sanitation is material health infrastructure rather than merely an aesthetic preference."
Expand All @@ -17,7 +26,7 @@
limitation: "The guideline does not settle who owes the work or how responsibility should be distributed."

- id: article-two-will-under-scarcity
article: rights.article-two
article: rights-and-definitions-of-the-way.article-two
stance: dissent
status: defended-risk
claim: "Poverty and scarcity can consume cognitive resources, so compliance, refusal, or poor performance cannot automatically be treated as evidence of free will or character."
Expand All @@ -26,10 +35,92 @@
limitation: "The study does not measure consent directly; the application to voluntariness is a bounded inference."

- id: article-two-trauma-evidence-limit
article: rights.article-two
article: rights-and-definitions-of-the-way.article-two
stance: limit
status: evidence-open
claim: "Trauma-informed care is widely implemented, but comparative evidence remains insufficient to determine effects across patient and client outcomes."
source_ids:
- ahrq-2025-trauma-informed-care
limitation: "The page may defend attention to trauma while keeping intervention effectiveness explicitly unresolved."

- id: article-three-reciprocity-escalation
article: rights-and-definitions-of-the-way.article-three
stance: dissent
status: defended-risk
claim: "Automatic tit-for-tat responses can turn low-intensity incivility into reciprocal escalation and increasingly aggressive conduct."
source_ids:
- andersson-pearson-1999-incivility
limitation: "The article is theoretical and workplace-focused; it warns against automatic reciprocity but does not model every conflict."

- id: article-three-structured-communication
article: rights-and-definitions-of-the-way.article-three
stance: support
status: evidence-informed
claim: "High-consequence communication can be made safer through shared tools for explicit messages, team leadership, situation monitoring, mutual support, and patient involvement."
source_ids:
- ahrq-2023-teamstepps
limitation: "TeamSTEPPS is a healthcare implementation framework; transfer to other domains requires adaptation and evaluation."

- id: article-four-procedural-justice-association
article: rights-and-definitions-of-the-way.article-four
stance: mixed
status: defended-association
claim: "Perceived procedural justice is consistently associated with perceived legitimacy, and legitimacy is usually associated with legal compliance."
source_ids:
- nagin-telep-2017-procedural-justice
limitation: "The review found that a causal chain from changed institutional practice to changed compliance had not been established."

- id: article-five-contextual-functioning
article: rights-and-definitions-of-the-way.article-five
stance: limit
status: framework-backed
claim: "Functioning and disability should be described in context, including environmental supports and barriers, rather than treated as a fixed global property of the person."
source_ids:
- who-2001-icf
limitation: "The ICF is descriptive and health-related; it does not define political adulthood or authorize removal of civil status."

- id: article-five-field-specific-competence
article: rights-and-definitions-of-the-way.article-five
stance: support
status: framework-backed
claim: "Competency can be defined by role-relevant outcomes and connected to curricula, practice activities, and assessment rather than inferred from title alone."
source_ids:
- who-2022-uhc-competency
limitation: "The framework concerns health-worker education and cannot be generalized into a universal civic competence test without new validation."

- id: article-six-bounded-incident-authority
article: rights-and-definitions-of-the-way.article-six
stance: support
status: operational-framework
claim: "Emergency authority can be structured through common terminology, explicit command and coordination, resource management, transfer, and demobilization."
source_ids:
- fema-2017-nims
limitation: "Incident management doctrine supports bounded emergency coordination, not permanent or general political authority."

- id: article-seven-normative-language
article: rights-and-definitions-of-the-way.article-seven
stance: support
status: standard-backed
claim: "Controlled definitions for requirement words can reduce ambiguity and make obligations and exceptions more interoperable."
source_ids:
- ietf-1997-rfc2119
- ietf-2017-rfc8174
limitation: "BCP 14 applies to technical documents that invoke it; ordinary, moral, and legal language requires additional contextual definition."

- id: article-eight-informed-consent-elements
article: rights-and-definitions-of-the-way.article-eight
stance: support
status: doctrine-backed
claim: "Valid informed consent requires information, comprehension, and voluntariness rather than a signature or nominal permission alone."
source_ids:
- hhs-1979-belmont-report
limitation: "The Belmont Report governs human-subject research; extending its consent model to other domains is an argued analogy, not direct jurisdiction."

- id: article-eight-vulnerability-and-risk
article: rights-and-definitions-of-the-way.article-eight
stance: limit
status: doctrine-backed
claim: "Respect for persons includes both autonomy and protection for diminished autonomy, while beneficence requires explicit assessment of risks, benefits, alternatives, and vulnerable populations."
source_ids:
- hhs-1979-belmont-report
limitation: "Protection must not be converted into total erasure of agency, and the report does not resolve every conflict among autonomy, harm, and public duty."
116 changes: 116 additions & 0 deletions src/_data/research/sources.yml
Original file line number Diff line number Diff line change
Expand Up @@ -45,3 +45,119 @@
reviewed_on: "2026-07-21"
relevance: "Assesses trauma-informed care models and patient or client outcomes across healthcare and social-service settings."
boundary: "Evidence was insufficient for clear outcome determinations; trauma-informed language must not be presented as evidence-closed."

- id: gundersen-ziliak-2015-food-insecurity
title: "Food insecurity and health outcomes"
authors: "Craig Gundersen; James P. Ziliak"
year: 2015
publication: "Health Affairs 34(11):1830-1839"
type: peer-reviewed review
doi: "10.1377/hlthaff.2015.0645"
url: "https://doi.org/10.1377/hlthaff.2015.0645"
reviewed_on: "2026-07-21"
relevance: "Reviews evidence linking food insecurity with adverse health outcomes and describes nutrition assistance as an important means of reducing food insecurity."
boundary: "Supports a material survival floor; it does not determine contribution rules, sanctions, or allocation under acute scarcity."

- id: andersson-pearson-1999-incivility
title: "Tit for Tat? The Spiraling Effect of Incivility in the Workplace"
authors: "Lynne M. Andersson; Christine M. Pearson"
year: 1999
publication: "Academy of Management Review 24(3):452-471"
type: peer-reviewed theoretical article
doi: "10.5465/AMR.1999.2202131"
url: "https://doi.org/10.5465/AMR.1999.2202131"
reviewed_on: "2026-07-21"
relevance: "Models how low-intensity incivility can pass tipping points and spiral into increasingly aggressive reciprocal behavior."
boundary: "Supports treating automatic reciprocity as an escalation risk; it does not establish that every conflict follows the proposed spiral."

- id: ahrq-2023-teamstepps
title: "TeamSTEPPS 3.0"
authors: "Agency for Healthcare Research and Quality"
year: 2023
publication: "AHRQ evidence-based teamwork and patient-safety curriculum"
type: evidence-based implementation framework
url: "https://www.ahrq.gov/teamstepps-program/index.html"
reviewed_on: "2026-07-21"
relevance: "Organizes communication, team leadership, situation monitoring, mutual support, and active patient involvement into trainable tools."
boundary: "Supports structured high-consequence communication in healthcare; transfer to other domains requires contextual validation."

- id: nagin-telep-2017-procedural-justice
title: "Procedural Justice and Legal Compliance"
authors: "Daniel S. Nagin; Cody W. Telep"
year: 2017
publication: "Annual Review of Law and Social Science 13:5-28"
type: peer-reviewed review
doi: "10.1146/annurev-lawsocsci-110316-113310"
url: "https://doi.org/10.1146/annurev-lawsocsci-110316-113310"
reviewed_on: "2026-07-21"
relevance: "Finds consistent associations among perceived procedural justice, legitimacy, and compliance in perception-based studies."
boundary: "The review explicitly states that a causal chain from changed institutional practice to changed compliance had not been established."

- id: who-2001-icf
title: "International Classification of Functioning, Disability and Health"
authors: "World Health Organization"
year: 2001
publication: "WHO international classification and framework"
type: international standard framework
url: "https://www.who.int/standards/classifications/international-classification-of-functioning-disability-and-health"
reviewed_on: "2026-07-21"
relevance: "Treats functioning and disability as contextual, including environmental factors rather than locating capacity only inside the person."
boundary: "Provides a framework for describing functioning; it does not define civic adulthood or authorize removal of legal status."

- id: who-2022-uhc-competency
title: "Global Competency and Outcomes Framework for Universal Health Coverage"
authors: "World Health Organization"
year: 2022
publication: "World Health Organization technical document"
type: competency framework
isbn: "978-92-4-003466-2"
url: "https://www.who.int/publications/i/item/9789240034662"
reviewed_on: "2026-07-21"
relevance: "Defines role-relevant competency domains and connects outcomes with curricula, learning activities, and assessment approaches."
boundary: "Supports field-specific demonstrated competence; it applies to health-worker education, not universal political standing."

- id: fema-2017-nims
title: "National Incident Management System, Third Edition"
authors: "Federal Emergency Management Agency"
year: 2017
publication: "FEMA incident-management doctrine"
type: official operational framework
url: "https://training.fema.gov/is/coursematerials.aspx?code=IS-700.b"
reviewed_on: "2026-07-21"
relevance: "Defines common terminology, command and coordination structures, resource management, transfer, and demobilization for incidents."
boundary: "Supports bounded emergency authority and interoperable command; incident doctrine is not a general constitution for ordinary governance."

- id: ietf-1997-rfc2119
title: "RFC 2119: Key words for use in RFCs to Indicate Requirement Levels"
authors: "Scott Bradner"
year: 1997
publication: "Internet Engineering Task Force Best Current Practice 14"
type: technical standard
doi: "10.17487/RFC2119"
url: "https://www.rfc-editor.org/info/rfc2119/"
reviewed_on: "2026-07-21"
relevance: "Defines consistent meanings for MUST, MUST NOT, SHOULD, SHOULD NOT, and MAY in technical specifications."
boundary: "Demonstrates the value of controlled normative language; it does not settle moral, legal, or ordinary-language definitions."

- id: ietf-2017-rfc8174
title: "RFC 8174: Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words"
authors: "Barry Leiba"
year: 2017
publication: "Internet Engineering Task Force Best Current Practice 14"
type: technical standard clarification
doi: "10.17487/RFC8174"
url: "https://www.rfc-editor.org/info/rfc8174/"
reviewed_on: "2026-07-21"
relevance: "Clarifies when standardized requirement words carry their defined force and reduces ambiguity caused by inconsistent capitalization."
boundary: "The clarification is limited to documents invoking BCP 14 and should not be projected onto all speech."

- id: hhs-1979-belmont-report
title: "The Belmont Report: Ethical Principles and Guidelines for the Protection of Human Subjects of Research"
authors: "National Commission for the Protection of Human Subjects of Biomedical and Behavioral Research"
year: 1979
publication: "United States Department of Health and Human Services"
type: foundational ethics report
url: "https://www.hhs.gov/ohrp/regulations-and-policy/belmont-report/read-the-belmont-report/index.html"
reviewed_on: "2026-07-21"
relevance: "Connects respect for persons with information, comprehension, and voluntariness; also requires risk-benefit assessment and protection for diminished autonomy."
boundary: "Governs human-subject research ethics and supplies a strong consent model; not every civil or private interaction is research."
50 changes: 50 additions & 0 deletions src/_data/research_data.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
import { readFile } from 'node:fs/promises';
import yaml from 'js-yaml';

// === MODULE_BUILD ===
// id: article_lab_research_data_adapter
// module_name: research_data
// module_kind: adapter
// summary: Loads the reviewed research source and claim ledgers into one explicit Eleventy global-data object.
// owner: Erin Spencer
// public_surface: research_data.sources, research_data.claims
// internal_surface: readYamlList
// auth_boundary: none
// storage_boundary: read
// network_boundary: none
// user_data_boundary: none
// admin_only: false
// tests: tests/research-ledger.test.mjs, tests/generated-site.test.mjs
// rollout: loaded automatically by Eleventy from src/_data/research_data.js
// rollback: restore direct template access after proving nested YAML data resolution
// === END MODULE_BUILD ===
// Usage: reference `research_data.sources` and `research_data.claims` in Nunjucks templates.
// Limits: this adapter exposes reviewed ledger content only; it does not infer stance, truth, or source relevance.

// === BOUNDARIES ===
// id: article_lab_research_data_storage_boundary
// summary: Reads two repository-owned YAML ledgers during static-site generation and returns parsed arrays.
// auth_boundary: none
// storage_boundary: read
// network_boundary: none
// user_data_boundary: none
// admin_only: false
// pii: none
// secrets: none
// side_effects: none
// owner: Erin Spencer
// === END BOUNDARIES ===

async function readYamlList(path) {
const parsed = yaml.load(await readFile(path, 'utf8'));
if (!Array.isArray(parsed)) throw new TypeError(`${path} must contain a YAML list`);
return parsed;
}

export default async function researchData() {
const [sources, claims] = await Promise.all([
readYamlList('src/_data/research/sources.yml'),
readYamlList('src/_data/research/claims.yml')
]);
return { sources, claims };
}
Loading
Loading