<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <title>passport-time.txt</title>
  <script>
    (() => {
      let storedTheme = null;
      try {
        storedTheme = localStorage.getItem("theme");
      } catch (error) {}

      if (storedTheme === "dark") {
        document.documentElement.dataset.theme = "dark";
      }
    })();
  </script>
  <link rel="stylesheet" href="/%25latex/styles.css">
</head>
<body class="document-page">
  <button class="theme-toggle" type="button" aria-label="Switch to dark mode" title="Dark mode">
    <svg class="theme-icon theme-icon-moon" viewBox="0 0 24 24" aria-hidden="true">
      <path d="M20.4 14.5A8.2 8.2 0 0 1 9.5 3.6a8.7 8.7 0 1 0 10.9 10.9Z"></path>
    </svg>
    <svg class="theme-icon theme-icon-sun" viewBox="0 0 24 24" aria-hidden="true">
      <circle cx="12" cy="12" r="4"></circle>
      <path d="M12 2v2M12 20v2M4.9 4.9l1.4 1.4M17.7 17.7l1.4 1.4M2 12h2M20 12h2M4.9 19.1l1.4-1.4M17.7 6.3l1.4-1.4"></path>
    </svg>
  </button>
  <script>
    (() => {
      const button = document.querySelector(".theme-toggle");

      const setTheme = (theme) => {
        const isDark = theme === "dark";
        if (isDark) {
          document.documentElement.dataset.theme = "dark";
        } else {
          document.documentElement.removeAttribute("data-theme");
        }

        button.setAttribute("aria-label", isDark ? "Switch to light mode" : "Switch to dark mode");
        button.setAttribute("aria-pressed", String(isDark));
        button.title = isDark ? "Light mode" : "Dark mode";

        try {
          localStorage.setItem("theme", isDark ? "dark" : "light");
        } catch (error) {}
      };

      setTheme(document.documentElement.dataset.theme === "dark" ? "dark" : "light");
      button.addEventListener("click", () => {
        setTheme(document.documentElement.dataset.theme === "dark" ? "light" : "dark");
      });
    })();
  </script>
  <header class="site-header">
    <a class="back-link" href="/outline/passport/">Back to directory</a>
    <h1>passport-time.txt</h1>
    <p class="path-label">outline/passport/passport-time.txt</p>
  </header>
  <main class="document-shell">
    <pre class="document-text">## Time

&gt;why fast&lt;

	every Peaceful project needs a single, trusted sign-in
	posters, memes, and meetups already point to shared campaigns
	passport unifies them — one identity across all actions
	every new volunteer automatically strengthens the network
	adoption spreads quietly because it’s useful everywhere


## Proof-of-concept


	profile schema finalised
		static site live on Cloudflare
		form submissions signed and verified through Workers
		first public profiles (staff + volunteers) visible
		passkey authentication functional; QR onboarding tested
		database-less design proven — JSON storage via R2

	shows how identity can work without control or surveillance
	anchors all Peaceful projects to one verifiable root


## Testing

	volunteers link their actions → posters, meetups, contributions
	profiles display simple proof-of-life (verified badge, last action)
	social recovery tested through small vouching circles
	passkey and recovery flows refined for clarity

	first visible use cases:
		- organisers verifying campus actions
		- campaign coordinators seeing total verified reach
		- users exporting their profiles as signed JSON



## Release

	passport.peacefulfoundation.org opens across all projects
	posters, meetups, and events include “verify via peaceful passport” QR
	integrations added:
		- calm.college → verify verified organisers who've taken action
		- learnstuff.today → link author to guides
		- reasonable.diet → link recipe contributions
		- quiteasily → show who has taken action verified organisers
		- hexagons.world → tag local actions per hexagon

	passport becomes visible part of the ecosystem:
		“Sign in with Peaceful Passport” appears on every site



## Integrating and Formalising

	system stable → transitions from pilot to infrastructure
	recovery and rotation flows formalised
	steward role created for abuse handling and transparency logs
	public changelog + audit pages show all edits and checkpoints
	optional institutional logins added (eduGAIN, IEEE, ORCID)

	passport integrated across:
		- peaceful.foundation dashboard
		- campaign poster generator
		- volunteer coordination tools

	becomes required for new project access and collaboration
	formal trust anchors added (signed by regional stewards)
	ACNC registration linked to verified director identities
	internal tools use passports for signatures and reporting

	public API opens for:
		- campaign verification
		- action metadata
		- badge issuance and validation


## Maturity

	passport becomes everyday infrastructure for the movement
	used quietly in the background of every project
	users export and import their signed identities across initiatives
	people use peaceful passport for other initiatives

	cultural normalisation:
		passport ID = participation, not profile
		quiet credibility replaces loud self-branding
		verification feels natural, not bureaucratic
</pre>
  </main>
  <footer class="site-footer">
    <a class="back-link" href="/outline/passport/">Back to directory</a>
  </footer>
</body>
</html>
