Last Updated June 11, 2026
Moral agency is not only a matter of isolated decisions. It is also shaped by the stories people tell about who they are, what they intended, what they suffered, what they chose, what they avoided, what they owe, and what kind of person they believe they are becoming.
Moral Agency and the Stories We Tell About Ourselves examines how self-narratives shape responsibility, excuse, repentance, blame, repair, self-deception, moral growth, and public accountability. It asks how people use stories to understand their own actions, defend themselves, confess failure, seek forgiveness, claim victimhood, justify harm, resist shame, or imagine change.

This article treats moral self-story as powerful but dangerous. Stories can help people acknowledge responsibility, repair harm, and become more truthful about themselves. They can also excuse wrongdoing, hide agency, exaggerate innocence, center suffering to avoid accountability, or convert moral growth into a flattering personal brand.
Why Moral Agency Matters
Moral agency matters because human beings do not merely act; they answer for action. A person can explain what happened, describe intention, acknowledge harm, deny responsibility, seek forgiveness, justify a choice, make a promise, or repair a wrong. Moral agency is the capacity to participate in this world of answerability.
Stories matter because people rarely understand responsibility as a single event. They locate actions inside larger accounts: childhood, pressure, loyalty, fear, ambition, ignorance, habit, trauma, temptation, duty, betrayal, institution, culture, or survival. These stories shape whether someone sees themselves as responsible, helpless, justified, guilty, ashamed, obligated, or capable of change.
The danger is that self-narratives can protect the self from moral truth. A person can tell a story that makes harm seem inevitable, blame seem unfair, apology seem complete, or repair seem unnecessary. Moral agency therefore requires not only a story about oneself, but the ability to test that story against consequences, witnesses, evidence, and the claims of others.
| Moral question | Narrative issue | Why it matters |
|---|---|---|
| What did I do? | The action must be described honestly. | Moral agency begins with truthful naming. |
| What did I intend? | The story may clarify motive or hide it. | Intention matters, but it does not erase consequence. |
| Whom did I affect? | Others must not disappear from the self-story. | Responsibility is relational. |
| What could I have done? | Agency must be evaluated within constraint. | Constraint can mitigate but not automatically erase responsibility. |
| What do I owe now? | The story must move from explanation to obligation. | Repair matters more than self-image. |
| Can I change? | The self-story may allow or block transformation. | Moral growth requires truthful revision. |
Moral agency matters because the stories people tell about themselves can either deepen responsibility or protect them from it.
What Is Moral Agency?
Moral agency is the capacity to act, deliberate, recognize reasons, affect others, understand norms, accept responsibility, and respond to moral claims. It includes intention, choice, awareness, consequence, accountability, and the possibility of repair.
Moral agency does not require total freedom. People act under pressure, constraint, fear, ignorance, habit, institution, culture, and unequal power. But agency is not erased every time conditions are difficult. A responsible analysis asks what the person knew, what options were available, what harms were foreseeable, what obligations existed, and what response followed.
In storytelling, moral agency appears through character, decision, motive, omission, silence, witness, consequence, confession, and change. A story can show agency clearly, obscure it, exaggerate it, or deny it. That is why moral self-narratives require careful analysis.
| Dimension | Meaning | Story question |
|---|---|---|
| Intention | What the person meant to do. | Does the story distinguish intention from impact? |
| Awareness | What the person knew or should have known. | Is ignorance innocent, chosen, or convenient? |
| Choice | What options were available. | Were alternatives honestly considered? |
| Consequence | What the action caused. | Are harms named directly? |
| Accountability | How the person answers for action. | Does the story move beyond explanation? |
| Repair | What is done in response to harm. | Does the story lead to obligation? |
Moral agency is the capacity to be more than the narrator of one’s own innocence.
Self-Narration and Responsibility
Self-narration is one way people make moral sense of themselves. A person may say, “I was trying to help,” “I had no choice,” “I did not know,” “I was under pressure,” “I was protecting someone,” “I was wrong,” or “I have changed.” Each statement places action inside a story.
Some self-narratives make responsibility clearer. They identify the action, name the harm, acknowledge the affected person, explain without excusing, and describe what repair requires. Other self-narratives make responsibility harder to see. They shift attention to pressure, intention, pain, misunderstanding, or identity while leaving consequences vague.
The ethical issue is not whether people should tell stories about themselves. They must. The issue is whether those stories remain accountable to reality beyond the self.
| Self-narrative move | Responsible version | Irresponsible version |
|---|---|---|
| Explaining context | Names pressure without erasing agency. | Uses pressure to avoid responsibility. |
| Describing intention | Distinguishes motive from impact. | Treats good intention as full defense. |
| Admitting harm | Names who was harmed and how. | Uses vague language like “mistakes were made.” |
| Claiming change | Shows concrete repair and altered practice. | Uses growth language to close the matter. |
| Discussing pain | Includes suffering without centering it over harm caused. | Uses personal pain to avoid accountability. |
| Seeking forgiveness | Leaves forgiveness to the harmed person. | Demands forgiveness as proof of moral progress. |
Self-narration becomes responsible when it can survive the presence of the people affected by the story.
The Moral Self as Story
People often understand themselves through moral identity: good person, loyal friend, responsible parent, honest worker, faithful believer, survivor, reformer, activist, patriot, helper, protector, rebel, victim, witness, or truth-teller. These identities are story-shaped. They explain what actions fit the self and what actions threaten it.
A moral identity can guide behavior. Someone who sees themselves as honest may resist lying. Someone who sees themselves as a protector may take risks for others. Someone who sees themselves as responsible may repair a wrong. Stories can sustain moral courage.
But moral identity can also become self-protection. The stronger the story “I am a good person,” the harder it may be to hear that one has caused harm. A person may defend the identity rather than examine the action. Moral growth often begins when the story of the self becomes honest enough to include failure.
| Moral identity | Possible strength | Possible distortion |
|---|---|---|
| The helper | Care, service, generosity. | Uses help to control or avoid listening. |
| The loyal one | Commitment and solidarity. | Protects wrongdoing inside the group. |
| The victim | Names real harm suffered. | Uses suffering to deny harm caused. |
| The reformer | Seeks change and accountability. | Turns moral language into status. |
| The truth-teller | Resists denial and silence. | Confuses bluntness with responsibility. |
| The survivor | Honors endurance. | Reduces identity to injury or exceptionalism. |
A moral self-story is useful only if it remains open to correction.
Intention, Action, and Consequence
Moral self-stories often overemphasize intention. People defend themselves by saying what they meant, hoped, or believed. Intention matters, but it does not settle moral responsibility. A person can intend good and still cause harm. A person can fail to intend harm because they refused to notice what should have been obvious.
Action and consequence must remain visible. What was done? What was omitted? What changed for others? What damage followed? Who bore the cost? What did the person do after learning the impact?
Narrative ethics requires keeping intention, action, and consequence in relation. A good self-story does not erase motive, but neither does it allow motive to swallow consequence.
| Element | Responsible use | Distortion |
|---|---|---|
| Intention | Clarifies what the person meant to do. | Becomes an excuse for impact. |
| Action | Names what actually happened. | Is hidden behind abstract language. |
| Omission | Names what the person failed to do. | Is treated as non-action. |
| Consequence | Centers the effect on others. | Is minimized as misunderstanding. |
| Knowledge | Asks what was known or knowable. | Uses ignorance without examining responsibility. |
| Response | Shows repair, apology, change, or refusal. | Ends at explanation. |
A morally serious story asks not only “What did I mean?” but “What did my action do?”
Excuse, Justification, and Self-Deception
People often use stories to manage guilt, shame, or blame. Some explanations are legitimate. Pressure, fear, misinformation, coercion, immaturity, illness, structural constraint, or emergency can matter morally. But explanation becomes evasion when it removes the harmed person from view.
An excuse says responsibility is reduced. A justification says the action was right or necessary. Self-deception says the story has become organized to protect the narrator from unwanted moral knowledge. These forms can overlap.
Self-deception is especially powerful because the narrator may believe the story sincerely. A person can select details, omit context, exaggerate constraint, minimize consequence, and make their own reaction seem inevitable. Moral agency requires the discipline of testing self-story against evidence and others’ accounts.
| Narrative defense | Legitimate use | Danger |
|---|---|---|
| Excuse | Recognizes reduced control or knowledge. | Erases responsibility too quickly. |
| Justification | Explains why an action was morally required. | Makes harm seem necessary without scrutiny. |
| Context | Shows conditions that shaped action. | Turns background into full defense. |
| Victim claim | Names harm suffered by the narrator. | Uses suffering to avoid accountability. |
| Comparison | Places action among alternatives. | Minimizes harm because others did worse. |
| Growth story | Describes change over time. | Uses change language to avoid repair. |
Self-deception is storytelling turned inward as a defense against moral truth.
Confession, Repentance, and Repair
Confession can be morally important, but confession is not the same as repair. A person can confess to relieve guilt, perform honesty, regain status, control the narrative, or preempt criticism. Confession becomes ethically meaningful only when it names harm truthfully and accepts responsibility beyond the self’s emotional need.
Repentance is more than feeling bad. It involves a changed relation to the action, the harmed person, the truth, and the future. It requires giving up the self-protective version of the story. It may require apology, restitution, changed behavior, public correction, institutional reform, or long-term accountability.
Repair is the test of moral self-narration. A story that ends with “I learned a lot” is not enough. The question is what the person now owes and whether the harmed party’s reality remains central.
| Mode | Responsible form | Weak form |
|---|---|---|
| Confession | Names action, harm, and responsibility clearly. | Centers the narrator’s relief. |
| Apology | Addresses the harmed person without demand. | Seeks quick forgiveness or reputation repair. |
| Repentance | Changes the narrator’s relation to truth and action. | Becomes temporary remorse. |
| Restitution | Responds materially where possible. | Offers symbolic words only. |
| Reform | Changes patterns, practices, or structures. | Claims a “new chapter” without evidence. |
| Accountability | Accepts ongoing answerability. | Treats the matter as closed. |
Moral repair begins when the story stops being mainly about how the narrator feels about being wrong.
Victimhood, Harm, and Agency
Victimhood can be a truthful moral category. People are harmed by violence, neglect, exploitation, betrayal, discrimination, abuse, and structural injustice. Naming victimhood can restore reality where denial has erased it. It can also create the conditions for witness, protection, justice, and repair.
But victimhood can also become narratively complicated. A person who has been harmed may also cause harm. A group that has suffered may also justify wrongdoing. A self-story organized only around injury may make agency difficult to see. The ethical task is not to deny victimhood, but to avoid making it the only moral fact.
Moral agency after harm requires care. Survivors should not be pressured into inspirational resilience or moral purity. At the same time, suffering does not automatically authorize every action taken afterward. A responsible narrative can hold harm suffered and responsibility for action together.
| Narrative pattern | Clarifies | Can distort |
|---|---|---|
| Victim testimony | Names harm and demands recognition. | Can be dismissed if it does not fit expected form. |
| Survival story | Honors endurance and agency. | Can be forced into inspiration. |
| Retaliation story | Explains anger and response. | Can justify new harm too easily. |
| Trauma explanation | Contextualizes behavior. | Can erase accountability. |
| Collective victimhood | Preserves group memory of harm. | Can authorize exclusion or revenge. |
| Repair story | Links recognition to obligation. | Can claim closure prematurely. |
A morally serious story can name harm suffered without using it to erase harm caused.
Moral Memory and Retrospective Judgment
Moral memory is the way people remember actions under later ethical understanding. Someone may look back and realize a joke was cruel, a silence was cowardly, a loyalty was misplaced, an ambition was harmful, or an apology was insufficient. Moral self-understanding often changes because the narrator changes.
Retrospective judgment can clarify responsibility. It can also distort the past. A narrator may judge an earlier self too harshly, too generously, or too cleanly. Hindsight can turn confusion into intention or intention into innocence. It can make growth seem inevitable.
A responsible moral memory distinguishes what was known then, what is known now, what should have been known, and what remains uncertain. This distinction is especially important in memoir, apology, testimony, public reckoning, and institutional history.
| Retrospective move | Responsible use | Risk |
|---|---|---|
| Reinterpretation | Allows later moral clarity. | Overwrites what was genuinely unclear. |
| Regret | Names responsibility and loss. | Centers the narrator’s sorrow over others’ harm. |
| Shame | Signals moral seriousness. | Can become self-absorption. |
| Learning | Shows changed understanding. | Can replace repair with personal growth. |
| Historical context | Explains norms and constraints. | Excuses what should have been challenged. |
| Public reckoning | Connects memory to accountability. | Performs virtue without structural change. |
Moral memory is responsible when it revises the self-story without using hindsight as a shield.
Others Inside the Moral Story
Every moral self-story includes others. The harmed person, witness, critic, accomplice, bystander, beneficiary, community, institution, and future audience all shape the meaning of action. A self-story that removes others becomes morally thin.
The narrator may describe others unfairly. A harmed person may become “too sensitive.” A critic may become “hostile.” A witness may become “confused.” A community may become “ungrateful.” These narrative moves protect the self by discrediting moral claims from outside.
Responsible moral self-narration gives others reality. It allows the harmed person’s experience to matter. It does not demand that others validate the narrator’s preferred identity. It understands that being a moral agent means being answerable to more than one’s own account.
| Other figure | Moral role | Risk in self-story |
|---|---|---|
| Harmed person | Shows consequence and obligation. | Is minimized, blamed, or abstracted. |
| Witness | Confirms, complicates, or contests the account. | Is dismissed as biased or irrelevant. |
| Accomplice | Shares or enables action. | Becomes the only one blamed. |
| Bystander | Reveals silence, permission, or missed intervention. | Disappears from responsibility. |
| Community | Defines norms, expectations, and repair. | Becomes an audience for image management. |
| Institution | Shapes incentives, roles, and accountability. | Is used either to hide personal agency or ignore structural pressure. |
A moral self-story becomes trustworthy when it gives other people more than supporting roles.
Public Moral Narratives
Public life is full of moral self-narratives. Leaders, organizations, movements, nations, professions, platforms, and institutions tell stories about integrity, service, sacrifice, reform, innocence, victimhood, learning, and progress. These stories seek legitimacy.
Public moral narratives can guide accountability. They can also become reputation management. An institution may say it has learned from harm while avoiding material repair. A leader may present criticism as persecution. A movement may define itself as righteous and therefore excuse its own abuses. A nation may narrate historical violence as necessary progress.
The ethical test for public moral narrative is whether the story can name harm, preserve evidence, include counter-memory, identify responsible agents, and commit to repair. A public story that protects legitimacy while avoiding accountability is not moral narration; it is moral branding.
| Public story | Responsible form | Manipulative form |
|---|---|---|
| Institutional apology | Names harm, agency, repair, and oversight. | Uses regret language to close scrutiny. |
| Leadership story | Connects power to responsibility. | Turns criticism into personal persecution. |
| Movement story | Aligns values with practice. | Excuses internal harm for the cause. |
| National story | Includes achievement, harm, conflict, and repair. | Turns violence into destiny or necessity. |
| Professional story | Defines standards and duties. | Protects status over accountability. |
| Platform story | Names design power and social effects. | Frames harm as user misuse only. |
Public moral narratives require evidence, counter-memory, and repair because reputation is not the same as responsibility.
Digital and AI-Mediated Moral Selfhood
Digital platforms intensify moral self-narration. People explain themselves in posts, apology videos, comment threads, profiles, newsletters, podcasts, and public statements. Audiences judge actions quickly, often through partial information. Platforms reward simplified moral roles: victim, villain, hypocrite, hero, fraud, witness, traitor, survivor, reformer.
Digital moral narratives can expose harm that would otherwise remain hidden. They can also flatten context, encourage performance, punish complexity, and make moral identity dependent on public visibility. The pressure to narrate oneself morally online can produce defensive confession, strategic vulnerability, or preemptive apology.
AI adds another layer. Systems can summarize reputations, infer character from traces, generate apology drafts, classify sentiment, or model moral scenarios. These tools can assist reflection, but they can also automate moral framing without context, consent, or accountability. Moral selfhood should not be reduced to a profile, score, or generated statement.
| Digital force | Moral-narrative effect | Governance question |
|---|---|---|
| Public apology post | Turns repair into visible performance. | Does action follow statement? |
| Viral judgment | Condenses moral identity into a moment. | What context is missing? |
| Reputation archive | Keeps past action searchable. | How can change be recognized without erasing harm? |
| Algorithmic amplification | Rewards moral outrage or confession. | Who benefits from escalation? |
| AI-generated apology | Produces moral language without moral labor. | Is the speaker accountable for the words? |
| Automated moral profiling | Infers character from traces. | Can the person contest the narrative? |
Digital moral selfhood requires a distinction between public performance, genuine accountability, and automated reputation.
Ethics of Self-Narration
The ethics of self-narration begins with humility. A person is never the only authority on the moral meaning of their action. The self knows intention, feeling, context, and memory from inside. Others may know consequence, harm, pattern, and impact from outside. A responsible self-story must be porous enough to hear them.
Ethical self-narration also requires proportion. The narrator should not overstate innocence, suffering, growth, coercion, ignorance, or transformation. The story should name what is known, what is uncertain, what remains contested, and what repair still requires.
The strongest moral self-stories are not the most flattering. They are the ones that can include failure without collapsing into shame, context without evasion, harm without defensiveness, and change without premature closure.
| Ethical requirement | Meaning | Warning sign |
|---|---|---|
| Truthfulness | Names action and consequence accurately. | Vague language hides agency. |
| Proportionality | Matches claim to evidence and responsibility. | The narrator overstates innocence or growth. |
| Other-regard | Allows harmed people moral reality. | The story centers only the narrator’s feelings. |
| Repair orientation | Moves from explanation to obligation. | The story ends at confession. |
| Openness to correction | Can be revised by evidence and witness. | The narrator treats disagreement as attack. |
| Method limits | States uncertainty and perspective. | The narrator claims final authority over all meaning. |
Ethical self-narration is not the art of appearing good. It is the discipline of becoming answerable.
Examples of Moral Self-Narrative Analysis
The examples below show how stories about the self can clarify or distort moral agency.
Personal apology
Weak: The apology centers the speaker’s regret and desire to move on.
Stronger: The analysis asks whether the apology names action, harm, affected people, repair, and future accountability.
Why it works: It separates moral language from moral repair.
Memoir of wrongdoing
Weak: The narrator’s growth becomes the point of the harm.
Stronger: The analysis asks whether the people harmed remain visible and whether repair exceeds self-understanding.
Why it works: It resists converting harm into character development.
Institutional reform story
Weak: The organization says it has learned and begun a new chapter.
Stronger: The analysis asks what changed materially, who was harmed, and what accountability remains.
Why it works: It tests closure against repair.
Victimhood narrative
Weak: Harm suffered becomes a shield against all responsibility.
Stronger: The analysis honors suffering while asking what agency remains.
Why it works: It holds harm suffered and harm caused together.
Public cancellation story
Weak: The narrator frames criticism only as mob attack.
Stronger: The analysis distinguishes unfair escalation from legitimate accountability.
Why it works: It refuses simple victim-villain roles.
AI-generated apology
Weak: The generated statement sounds appropriate.
Stronger: The analysis asks whether the speaker understands, owns, and acts on the words.
Why it works: It treats moral language as accountable practice.
Moral self-narrative analysis should test the story against action, consequence, witness, and repair.
Mathematics, Computation, and Modeling
Moral agency should not be reduced to a score. Still, modeling can make the assumptions of moral self-narrative analysis more explicit. It can help audit whether a story identifies action, consequence, agency, excuse, repair, other-person reality, and method limits.
A moral-agency clarity score can estimate whether a self-story names responsibility clearly:
M_c = \frac{A_n + I_d + C_q + H_m + R_o + O_v}{6}
\]
Interpretation: Moral clarity \(M_c\) averages action naming \(A_n\), intention distinction \(I_d\), consequence clarity \(C_q\), harm marking \(H_m\), repair orientation \(R_o\), and other-person visibility \(O_v\).
An excuse-risk score can estimate whether the self-story is avoiding responsibility:
E_r = C_pw_c + I_sw_i + V_sw_v + B_sw_b + G_sw_g + (1 – H_m)w_h
\]
Interpretation: Excuse risk \(E_r\) rises with context overuse \(C_p\), intention shielding \(I_s\), victimhood shielding \(V_s\), blame shifting \(B_s\), growth substitution \(G_s\), and weak harm marking \(H_m\).
A repair-readiness score can estimate whether the narrative moves toward obligation:
R_r = \frac{H_a + A_p + M_r + C_c + F_u + T_o}{6}
\]
Interpretation: Repair readiness \(R_r\) averages harm acknowledgment \(H_a\), apology precision \(A_p\), material response \(M_r\), conduct change \(C_c\), future accountability \(F_u\), and third-party oversight \(T_o\).
An interpretation-readiness score can estimate whether the moral analysis is suitable for reuse:
I_m = \frac{S_c + E_v + U_n + C_x + M_l + R_w}{6}
\]
Interpretation: Interpretation readiness \(I_m\) averages source context \(S_c\), evidence visibility \(E_v\), uncertainty notes \(U_n\), cultural context \(C_x\), method limits \(M_l\), and review ownership \(R_w\).
| Modeling task | Interpretive question | Example output |
|---|---|---|
| Moral clarity audit | Does the story name action, intention, consequence, harm, repair, and others? | Moral-agency clarity profile. |
| Excuse-risk audit | Does the story use context, intention, victimhood, blame shifting, or growth to avoid responsibility? | Excuse-risk score. |
| Repair audit | Does the narrative move from explanation to obligation? | Repair-readiness score. |
| Witness audit | Are harmed people and witnesses represented fairly? | Other-person visibility table. |
| Digital audit | Does public or AI-mediated moral narration flatten accountability? | Digital moral selfhood governance note. |
| Governance audit | Is the analysis responsible enough for publication or reuse? | Canvas card and governance queue. |
Computation can support moral self-narrative analysis only when it remains accountable to evidence, witnesses, context, and human judgment.
Python Workflow: Moral Agency Canvas Audit
The Python workflow below follows the advanced Catalyst Canvas standard: typed records, config-driven scoring, validation, governance notes, Canvas-card exports, CSV outputs, JSON outputs, markdown governance queues, and review priorities. The companion repository version includes the shared `python/catalyst_canvas/` layer plus article-specific data for moral agency, excuse risk, repair readiness, witness visibility, and digital moral selfhood.
# run_moral_agency_canvas_audit.py
from __future__ import annotations
from dataclasses import dataclass
from pathlib import Path
import csv
import json
from hashlib import sha256
from statistics import mean
from typing import Any
ARTICLE_ROOT = Path(__file__).resolve().parents[1]
OUTPUTS = ARTICLE_ROOT / "outputs"
@dataclass(frozen=True)
class MoralAgencyRecord:
item: str
claim_context: str
action_naming: float
intention_distinction: float
consequence_clarity: float
harm_marking: float
repair_orientation: float
other_visibility: float
context_overuse: float
intention_shielding: float
victimhood_shielding: float
blame_shifting: float
growth_substitution: float
harm_minimization: float
harm_acknowledgment: float
apology_precision: float
material_response: float
conduct_change: float
future_accountability: float
third_party_oversight: float
source_context: float
evidence_visibility: float
uncertainty_notes: float
cultural_context: float
method_limits: float
review_owner_clarity: float
public_consequence: float
owner: str = "editorial"
status: str = "active"
notes: str = ""
@dataclass(frozen=True)
class MoralAgencyConfig:
article_title: str = "Moral Agency and the Stories We Tell About Ourselves"
article_slug: str = "moral-agency-and-the-stories-we-tell-about-ourselves"
medium_threshold: float = 0.45
high_threshold: float = 0.62
allowed_statuses: tuple[str, ...] = ("active", "archive", "review", "revise")
def validate_score(value: float, field_name: str) -> None:
if value < 0 or value > 1:
raise ValueError(f"{field_name} must be between 0 and 1.")
def validate_record(record: MoralAgencyRecord, config: MoralAgencyConfig) -> None:
if not record.item.strip():
raise ValueError("item is required.")
if not record.claim_context.strip():
raise ValueError("claim_context is required.")
if record.status not in config.allowed_statuses:
raise ValueError(f"Invalid status: {record.status}")
for field_name, value in record.__dict__.items():
if isinstance(value, float):
validate_score(value, field_name)
def moral_clarity(record: MoralAgencyRecord) -> float:
return mean([
record.action_naming,
record.intention_distinction,
record.consequence_clarity,
record.harm_marking,
record.repair_orientation,
record.other_visibility,
])
def excuse_risk(record: MoralAgencyRecord) -> float:
return min(
1.0,
record.context_overuse * 0.16
+ record.intention_shielding * 0.18
+ record.victimhood_shielding * 0.18
+ record.blame_shifting * 0.18
+ record.growth_substitution * 0.16
+ record.harm_minimization * 0.14,
)
def repair_readiness(record: MoralAgencyRecord) -> float:
return mean([
record.harm_acknowledgment,
record.apology_precision,
record.material_response,
record.conduct_change,
record.future_accountability,
record.third_party_oversight,
])
def interpretation_readiness(record: MoralAgencyRecord) -> float:
return mean([
record.source_context,
record.evidence_visibility,
record.uncertainty_notes,
record.cultural_context,
record.method_limits,
record.review_owner_clarity,
])
def governance_priority_score(record: MoralAgencyRecord, config: MoralAgencyConfig) -> float:
score = (
excuse_risk(record) * 0.36
+ (1 - repair_readiness(record)) * 0.24
+ (1 - interpretation_readiness(record)) * 0.22
+ record.public_consequence * 0.18
)
if record.status == "revise":
score = max(score, config.high_threshold)
elif record.status == "review":
score = max(score, config.medium_threshold)
return min(1.0, max(0.0, score))
def review_priority(record: MoralAgencyRecord, config: MoralAgencyConfig) -> str:
score = governance_priority_score(record, config)
if score >= config.high_threshold:
return "high"
if score >= config.medium_threshold:
return "medium"
return "standard"
def card_id(record: MoralAgencyRecord, config: MoralAgencyConfig) -> str:
raw = f"{config.article_slug}|{record.item}|{record.claim_context}"
return sha256(raw.encode("utf-8")).hexdigest()[:16]
def governance_note(record: MoralAgencyRecord, config: MoralAgencyConfig) -> str:
priority = review_priority(record, config)
risk = excuse_risk(record)
repair = repair_readiness(record)
notes = []
if priority == "high":
notes.append("High-priority moral-agency governance review required.")
elif priority == "medium":
notes.append("Medium-priority review recommended before reuse.")
else:
notes.append("Standard editorial review sufficient.")
if risk >= 0.55:
notes.append("Excuse risk is elevated; review context overuse, intention shielding, victimhood shielding, blame shifting, growth substitution, and harm minimization.")
if repair < 0.60:
notes.append("Repair readiness is limited; strengthen harm acknowledgment, apology precision, material response, conduct change, future accountability, and oversight.")
if record.notes:
notes.append(record.notes)
return " ".join(notes)
def canvas_card(record: MoralAgencyRecord, config: MoralAgencyConfig) -> dict[str, Any]:
return {
"schema_version": "1.0.0",
"card_id": card_id(record, config),
"card_type": "moral_agency_self_narrative",
"article_title": config.article_title,
"article_slug": config.article_slug,
"item": record.item,
"claim_context": record.claim_context,
"scores": {
"moral_clarity": round(moral_clarity(record), 4),
"excuse_risk": round(excuse_risk(record), 4),
"repair_readiness": round(repair_readiness(record), 4),
"interpretation_readiness": round(interpretation_readiness(record), 4),
"governance_priority_score": round(governance_priority_score(record, config), 4),
},
"review": {
"priority": review_priority(record, config),
"owner": record.owner,
"status": record.status,
"governance_note": governance_note(record, config),
},
}
def write_csv(path: Path, rows: list[dict[str, Any]]) -> None:
path.parent.mkdir(parents=True, exist_ok=True)
fieldnames = list(rows[0].keys())
with path.open("w", encoding="utf-8", newline="") as handle:
writer = csv.DictWriter(handle, fieldnames=fieldnames)
writer.writeheader()
writer.writerows(rows)
def write_json(path: Path, payload: Any) -> None:
path.parent.mkdir(parents=True, exist_ok=True)
path.write_text(json.dumps(payload, indent=2), encoding="utf-8")
def write_markdown_queue(path: Path, rows: list[dict[str, Any]]) -> None:
path.parent.mkdir(parents=True, exist_ok=True)
lines = [
"# Moral Agency Governance Queue",
"",
"| Item | Context | Moral clarity | Excuse risk | Repair readiness | Readiness | Priority | Owner |",
"|---|---|---:|---:|---:|---:|---|---|",
]
for row in rows:
lines.append(
f"| {row['item']} | {row['claim_context']} | "
f"{row['moral_clarity']} | {row['excuse_risk']} | "
f"{row['repair_readiness']} | {row['interpretation_readiness']} | "
f"{row['review_priority']} | {row['owner']} |"
)
path.write_text("\n".join(lines) + "\n", encoding="utf-8")
def main() -> None:
config = MoralAgencyConfig()
records = [
MoralAgencyRecord(
"Personal apology",
"action harm repair and accountability audit",
0.86, 0.82, 0.84, 0.88, 0.80, 0.82,
0.36, 0.42, 0.30, 0.34, 0.40, 0.32,
0.86, 0.84, 0.76, 0.78, 0.82, 0.72,
0.84, 0.82, 0.80, 0.82, 0.84, 0.80,
0.78,
"editorial", "active",
"Standard review; check whether repair follows apology."
),
MoralAgencyRecord(
"Institutional reform story",
"closure language legitimacy and repair audit",
0.68, 0.70, 0.66, 0.62, 0.58, 0.60,
0.72, 0.68, 0.50, 0.76, 0.82, 0.78,
0.58, 0.62, 0.44, 0.50, 0.46, 0.42,
0.76, 0.74, 0.78, 0.80, 0.76, 0.78,
0.92,
"governance", "revise",
"Escalate premature closure and reputation management."
),
MoralAgencyRecord(
"Victimhood shielding",
"harm suffered harm caused and agency audit",
0.72, 0.68, 0.70, 0.64, 0.60, 0.58,
0.62, 0.58, 0.88, 0.66, 0.54, 0.70,
0.62, 0.60, 0.50, 0.54, 0.56, 0.48,
0.80, 0.76, 0.78, 0.82, 0.78, 0.80,
0.88,
"ethics review", "review",
"Honor harm suffered while reviewing responsibility for harm caused."
),
]
rows = []
cards = []
for record in records:
validate_record(record, config)
cards.append(canvas_card(record, config))
rows.append({
"item": record.item,
"claim_context": record.claim_context,
"moral_clarity": round(moral_clarity(record), 4),
"excuse_risk": round(excuse_risk(record), 4),
"repair_readiness": round(repair_readiness(record), 4),
"interpretation_readiness": round(interpretation_readiness(record), 4),
"governance_priority_score": round(governance_priority_score(record, config), 4),
"review_priority": review_priority(record, config),
"owner": record.owner,
"status": record.status,
"governance_note": governance_note(record, config),
})
priority_order = {"high": 3, "medium": 2, "standard": 1}
rows = sorted(
rows,
key=lambda row: (
priority_order.get(str(row["review_priority"]), 0),
float(row["governance_priority_score"]),
),
reverse=True,
)
queue = [row for row in rows if row["review_priority"] != "standard"]
queue_cards = [card for card in cards if card["review"]["priority"] != "standard"]
write_csv(OUTPUTS / "tables" / "moral_agency_audit.csv", rows)
write_csv(OUTPUTS / "tables" / "moral_agency_governance_queue.csv", queue)
write_json(OUTPUTS / "json" / "moral_agency_canvas_cards.json", cards)
write_json(OUTPUTS / "json" / "moral_agency_governance_queue.json", queue_cards)
write_markdown_queue(OUTPUTS / "markdown" / "moral_agency_governance_queue.md", queue)
print("Moral agency Canvas audit complete.")
if __name__ == "__main__":
main()
This workflow treats moral self-narratives as accountable claims about action, consequence, agency, repair, and the presence of others.
R Workflow: Moral Agency Diagnostics
The R workflow below provides a portable base R diagnostic for moral self-narrative analysis. It calculates moral clarity, excuse risk, repair readiness, interpretation readiness, governance priority, and review status.
# moral_agency_diagnostics.R
# Base R workflow for Moral Agency and the Stories We Tell About Ourselves.
args <- commandArgs(trailingOnly = FALSE)
file_arg <- grep("^--file=", args, value = TRUE)
if (length(file_arg) > 0) {
script_path <- normalizePath(sub("^--file=", "", file_arg[1]), mustWork = TRUE)
article_root <- normalizePath(file.path(dirname(script_path), ".."), mustWork = TRUE)
} else {
article_root <- getwd()
}
setwd(article_root)
tables_dir <- file.path(article_root, "outputs", "tables")
figures_dir <- file.path(article_root, "outputs", "figures")
dir.create(tables_dir, recursive = TRUE, showWarnings = FALSE)
dir.create(figures_dir, recursive = TRUE, showWarnings = FALSE)
records <- data.frame(
item = c(
"Personal apology",
"Institutional reform story",
"Victimhood shielding"
),
claim_context = c(
"action harm repair and accountability audit",
"closure language legitimacy and repair audit",
"harm suffered harm caused and agency audit"
),
action_naming = c(0.86, 0.68, 0.72),
intention_distinction = c(0.82, 0.70, 0.68),
consequence_clarity = c(0.84, 0.66, 0.70),
harm_marking = c(0.88, 0.62, 0.64),
repair_orientation = c(0.80, 0.58, 0.60),
other_visibility = c(0.82, 0.60, 0.58),
context_overuse = c(0.36, 0.72, 0.62),
intention_shielding = c(0.42, 0.68, 0.58),
victimhood_shielding = c(0.30, 0.50, 0.88),
blame_shifting = c(0.34, 0.76, 0.66),
growth_substitution = c(0.40, 0.82, 0.54),
harm_minimization = c(0.32, 0.78, 0.70),
harm_acknowledgment = c(0.86, 0.58, 0.62),
apology_precision = c(0.84, 0.62, 0.60),
material_response = c(0.76, 0.44, 0.50),
conduct_change = c(0.78, 0.50, 0.54),
future_accountability = c(0.82, 0.46, 0.56),
third_party_oversight = c(0.72, 0.42, 0.48),
source_context = c(0.84, 0.76, 0.80),
evidence_visibility = c(0.82, 0.74, 0.76),
uncertainty_notes = c(0.80, 0.78, 0.78),
cultural_context = c(0.82, 0.80, 0.82),
method_limits = c(0.84, 0.76, 0.78),
review_owner_clarity = c(0.80, 0.78, 0.80),
public_consequence = c(0.78, 0.92, 0.88),
owner = c("editorial", "governance", "ethics review"),
status = c("active", "revise", "review"),
stringsAsFactors = FALSE
)
records$moral_clarity <- rowMeans(records[, c(
"action_naming",
"intention_distinction",
"consequence_clarity",
"harm_marking",
"repair_orientation",
"other_visibility"
)])
records$excuse_risk <- pmin(
1,
records$context_overuse * 0.16 +
records$intention_shielding * 0.18 +
records$victimhood_shielding * 0.18 +
records$blame_shifting * 0.18 +
records$growth_substitution * 0.16 +
records$harm_minimization * 0.14
)
records$repair_readiness <- rowMeans(records[, c(
"harm_acknowledgment",
"apology_precision",
"material_response",
"conduct_change",
"future_accountability",
"third_party_oversight"
)])
records$interpretation_readiness <- rowMeans(records[, c(
"source_context",
"evidence_visibility",
"uncertainty_notes",
"cultural_context",
"method_limits",
"review_owner_clarity"
)])
records$governance_priority_score <- pmin(
1,
records$excuse_risk * 0.36 +
(1 - records$repair_readiness) * 0.24 +
(1 - records$interpretation_readiness) * 0.22 +
records$public_consequence * 0.18
)
records$review_priority <- ifelse(
records$status == "revise" | records$governance_priority_score >= 0.62,
"high",
ifelse(
records$status == "review" | records$governance_priority_score >= 0.45,
"medium",
"standard"
)
)
records <- records[order(records$governance_priority_score, decreasing = TRUE), ]
write.csv(records, file.path(tables_dir, "moral_agency_diagnostics.csv"), row.names = FALSE)
write.csv(records[records$review_priority != "standard", ], file.path(tables_dir, "moral_agency_governance_queue.csv"), row.names = FALSE)
png(file.path(figures_dir, "moral_clarity_scores.png"), width = 1200, height = 700)
barplot(
records$moral_clarity,
names.arg = records$item,
las = 2,
ylab = "Moral clarity",
main = "Moral Self-Narrative Clarity"
)
grid()
dev.off()
png(file.path(figures_dir, "excuse_risk_scores.png"), width = 1200, height = 700)
barplot(
records$excuse_risk,
names.arg = records$item,
las = 2,
ylab = "Excuse risk",
main = "Moral Self-Narrative Excuse Risk"
)
grid()
dev.off()
print(records[, c(
"item",
"claim_context",
"moral_clarity",
"excuse_risk",
"repair_readiness",
"interpretation_readiness",
"review_priority"
)])
This workflow supports structured review while preserving the interpretive and ethical limits of moral self-narrative analysis.
GitHub Repository
The companion repository for this article supports moral self-narrative analysis as a Catalyst Canvas-ready module. It includes advanced additive `python/catalyst_canvas/` governance infrastructure, article-specific moral-agency data, config-driven scoring, validation, governance notes, Canvas card generation, CSV/JSON/markdown exporters, CLI workflows, smoke tests, unit tests, R diagnostics, SQL structures, documentation, and reusable moral-agency review templates.
Complete Code Repository
Companion repository for the article, including advanced Catalyst Canvas-ready code for moral agency, self-narration, responsibility, excuse risk, repair readiness, witness visibility, digital moral selfhood, JSON exports, Canvas cards, governance queues, and reproducible research workflows.
articles/moral-agency-and-the-stories-we-tell-about-ourselves/
├── canvas/
│ ├── canvas_manifest.json
│ ├── input_schema.json
│ ├── output_schema.json
│ ├── catalyst_canvas_config.json
│ ├── catalyst_canvas_manifest.json
│ ├── catalyst_canvas_cards.json
│ └── catalyst_canvas_governance_queue.json
├── html/
├── css/
├── php/
├── java/
├── python/
│ ├── catalyst_canvas/
│ │ ├── __init__.py
│ │ ├── __main__.py
│ │ ├── cli.py
│ │ ├── models.py
│ │ ├── scoring.py
│ │ ├── validation.py
│ │ ├── governance.py
│ │ └── exporters.py
│ ├── moral_agency_canvas/
│ │ ├── __init__.py
│ │ ├── models.py
│ │ ├── scoring.py
│ │ ├── validation.py
│ │ ├── governance.py
│ │ └── exporters.py
│ ├── tests/
│ │ ├── test_catalyst_canvas.py
│ │ └── test_moral_agency_canvas.py
│ ├── run_catalyst_canvas_audit.py
│ └── run_moral_agency_canvas_audit.py
├── r/
│ ├── moral_agency_diagnostics.R
│ └── run_all_moral_agency_workflows.R
├── sql/
│ ├── canvas_schema.sql
│ └── canvas_queries.sql
├── docs/
│ ├── article_notes.md
│ ├── modeling_principles.md
│ ├── moral_agency_and_responsibility.md
│ ├── self_narration_and_accountability.md
│ ├── intention_action_and_consequence.md
│ ├── excuse_justification_and_self_deception.md
│ ├── confession_repentance_and_repair.md
│ ├── victimhood_harm_and_agency.md
│ ├── public_moral_narratives.md
│ ├── digital_and_ai_mediated_moral_selfhood.md
│ ├── ethical_risk.md
│ ├── responsible_use.md
│ ├── governance_notes.md
│ └── catalyst_canvas_upgrade_notes.md
├── data/
│ ├── moral_agency_claims.csv
│ ├── apology_repair_notes.csv
│ ├── excuse_risk_notes.csv
│ ├── public_moral_narrative_notes.csv
│ ├── digital_moral_selfhood_governance_notes.csv
│ └── catalyst_canvas_assessment.csv
├── outputs/
│ ├── figures/
│ ├── json/
│ ├── markdown/
│ └── tables/
├── notebooks/
├── shared/
│ ├── schemas/
│ ├── narrative-templates/
│ ├── story-archetypes/
│ ├── character-models/
│ ├── plot-structures/
│ ├── rhetorical-frameworks/
│ ├── cultural-memory/
│ ├── moral-agency/
│ └── governance/
├── tests/
└── README.md
Related Articles
- Autobiography, Memoir, and Life-Writing
- Narrative Identity and the Story of the Self
- Memory, Trauma, and Fragmented Narrative
- Paul Ricoeur and Narrative Time
- Law, Evidence, and Narrative Responsibility
- Rhetorical Moves and the Ethics of Persuasive Story
A Practical Method for Analyzing Moral Self-Narratives
1. Identify the action
Name what the person did, failed to do, enabled, ignored, or benefited from.
2. Distinguish intention from impact
Ask what the narrator meant, but do not let intention erase consequence.
3. Map consequences
Identify who was affected, how they were affected, and what changed for them.
4. Evaluate agency and constraint
Ask what options were available, what pressures existed, and what the person knew or should have known.
5. Look for narrative defenses
Identify excuses, justifications, blame shifting, victimhood shielding, context overuse, and growth substitution.
6. Center harmed people
Ask whether the story gives moral reality to those affected.
7. Review confession and apology
Distinguish remorse, confession, apology, repair, and accountability.
8. Test repair claims
Ask what concrete action follows the moral story.
9. Audit public or digital performance
Ask whether moral language is being used for reputation management or platform performance.
10. State method limits
Explain what can be responsibly inferred and what remains uncertain.
The method treats moral self-narration as accountable storytelling, not self-protective explanation.
Common Pitfalls
Several pitfalls appear when moral agency and self-narration are handled too quickly.
- Letting intention erase consequence: Good intent does not settle moral responsibility.
- Using context as full defense: Pressure may matter without eliminating agency.
- Centering the narrator’s feelings: Remorse is not the same as repair.
- Confusing confession with accountability: Saying the truth does not complete moral response.
- Turning growth into closure: Personal development does not erase harm.
- Using victimhood as shield: Harm suffered does not automatically justify harm caused.
- Erasing others: A self-story becomes morally thin when harmed people disappear.
- Performing public virtue: Moral branding can replace responsibility.
- Automating moral language: AI-generated apologies can sound accountable without moral labor.
- Rejecting revision: A moral self-story must remain open to evidence and witness.
The central pitfall is mistaking a persuasive self-story for moral truth.
Why Moral Self-Narration Still Matters
Moral self-narration still matters because human beings need stories to understand responsibility across time. A person is not only a decision-maker in the moment. A person is also someone who remembers, explains, promises, regrets, apologizes, repairs, changes, and remains answerable.
The stories people tell about themselves can support moral growth. They can help someone name harm, resist self-deception, accept correction, seek repair, and become more truthful. They can also protect innocence, hide consequence, excuse wrongdoing, demand forgiveness, or convert accountability into image management.
The ethical task is not to abandon self-story. The ethical task is to tell it under discipline. A morally serious self-story must include action, consequence, others, evidence, uncertainty, and repair. It must be able to hear the people affected by it. It must be willing to change.
Moral agency begins when the self stops using story only to explain itself and begins using story to become answerable.
Further Reading
- Aristotle (2009) The Nicomachean Ethics. Translated by D. Ross. Oxford: Oxford University Press.
- Frankfurt, H.G. (1988) The Importance of What We Care About. Cambridge: Cambridge University Press.
- Lagay, F.L. (2014) ‘The Ethical Force of Stories: Narrative Ethics and Beyond’, AMA Journal of Ethics, 16(8), pp. 609–612. Available at: https://journalofethics.ama-assn.org/article/ethical-force-stories-narrative-ethics-and-beyond/2014-08
- MacIntyre, A. (1981) After Virtue: A Study in Moral Theory. Notre Dame: University of Notre Dame Press.
- Ricoeur, P. (1992) Oneself as Another. Translated by K. Blamey. Chicago: University of Chicago Press.
- Schechtman, M. (1996) The Constitution of Selves. Ithaca: Cornell University Press.
- Taylor, C. (1989) Sources of the Self: The Making of the Modern Identity. Cambridge: Cambridge University Press.
- Williams, B. (1981) Moral Luck. Cambridge: Cambridge University Press.
References
- Aristotle (2009) The Nicomachean Ethics. Translated by D. Ross. Oxford: Oxford University Press.
- Emelin, D., Le Bras, R., Hwang, J.D., Forbes, M. and Choi, Y. (2020) ‘Moral Stories: Situated Reasoning about Norms, Intents, Actions, and their Consequences’. Available at: https://arxiv.org/abs/2012.15738
- Frankfurt, H.G. (1988) The Importance of What We Care About. Cambridge: Cambridge University Press.
- Lagay, F.L. (2014) ‘The Ethical Force of Stories: Narrative Ethics and Beyond’, AMA Journal of Ethics, 16(8), pp. 609–612. Available at: https://journalofethics.ama-assn.org/article/ethical-force-stories-narrative-ethics-and-beyond/2014-08
- MacIntyre, A. (1981) After Virtue: A Study in Moral Theory. Notre Dame: University of Notre Dame Press.
- Pellauer, D. (2022) ‘Paul Ricoeur’, Stanford Encyclopedia of Philosophy. Available at: https://plato.stanford.edu/entries/ricoeur/
- Ricoeur, P. (1992) Oneself as Another. Translated by K. Blamey. Chicago: University of Chicago Press.
- Schechtman, M. (1996) The Constitution of Selves. Ithaca: Cornell University Press.
- Taylor, C. (1989) Sources of the Self: The Making of the Modern Identity. Cambridge: Cambridge University Press.
- Williams, B. (1981) Moral Luck. Cambridge: Cambridge University Press.
