Quietly Operating Standard is the machine-readable operating layer for your organization's identity. Values, voice, brand, rules, relationships... locked in, version-controlled, cascading.
So every AI agent working on your behalf honors your compass... instead of guessing it.
Under construction. Reference implementation ships first.
Every tool you connect to AI gets a different version of you. ChatGPT knows one thing. Claude knows another. The agent running your outreach knows a third. None of them share memory. None of them agree on your values. None of them know what you forbid.
So they guess. They pattern-match. They hallucinate a brand voice that's close enough to plausible, and they ship it... before anyone checks.
The drift is invisible until it isn't.
A week of silent brand drift. Multiply by every supporter you serve.
QOS forces your organization to consider the things you forget to clarify when moving fast. Then it locks in the answers. So the next agent, the next tool, the next teammate operates inside the same frame.
Your identity as structured JSON. Not a 50-page brand guide nobody opens. Every agent can read it before generating anything on your behalf.
Parent to child. Root values flow to every program, every supporter, every app. Children can extend or raise severity... never weaken an absolute rule.
A single slider changes a value. The Values Editor lets you test a policy against real fixtures before you ship it. No engineer required.
Structural checks, cross-reference checks, em-dash leaks, test-fixture shapes. If the standard forbids it, the standard catches it... at resolve time, not at review time.
Every LLM call on your behalf reads your resolved JSON first. Zero hallucination of values. Zero reinvention of voice. Full consistency across every tool.
"It unlocks the full power of agentic superpowers... while fully retaining and locking-in the absolutes." TIG, framing QOS
QOS isn't theory. It's 30 years of consulting methodology being programmatized.
VOSPA... Values, Organization, Story, People, Automation... is the framework Chaplain TIG has delivered as premium consulting ($10K+/month) for three decades. Every layer refined on Fortune 100 clients and Mom-and-Pop shops. Every mistake paid for.
The app family we're building translates VOSPA into code. Any organization can access it through affordable donation... instead of paying for a consultant to write a PDF nobody reads.
QOS is the interoperability layer that makes it possible.
The "Duct Tape to Rocket Ship" teaching series... 26 articles publishing progressively on chaplaintig.com... walks through VOSPA for builders who want the 70% DIY path. Full standard, fully public, eventually.
QOS lives across three apps... each owning a single plane of concern. Classic write/execute/read separation from distributed systems, applied to organizational identity.
Edit JSON values, voice, rules, relationships. UI sliders map to schema paths. Version-controlled. Variant-forkable for A/B testing.
Any app or agent that reads resolved JSON and takes deterministic action. QWF runs QWB for sites, QWR for articles, QNT for chapters, plus sibling apps for quoting, tracking, and outreach. Pattern: LLMs decide, code executes.
Dashboards, A/B results, change history, drift alerts. The SPOT where effects become visible.
QOS is a standard. The QWF app family is one reference implementation... the one that eats its own dog food. Your implementation can be entirely different. Fork the schemas. Build your own control/execution/observation layers. The contracts in the JSON are what matter, not the specific apps around them.
This is the live build log. Every session that ships QOS-relevant work appends an entry. No roadmap theater. Just what shipped, when, and what was real.
A supporter brand's vospa-roadmap.v1 instance now carries a 14-phase project that uses the QOS schema family itself as delivered milestones. Five of the fourteen phases are the QOS content-governing schemas... values.v1, voice.v1, universe.v1, content.v1, decisions.v1... shown as discrete shipped phases in the supporter's portfolio view.
This is the first time a vospa-roadmap child uses the standard's own schema ships as project phases, anchoring QOS to a supporter visually rather than abstractly. The narrative names the three-plane architecture in plain language: QOP writes the schemas, QWB executes the per-supporter work, QSP observes and presents the deliverable.
Project status... 9 of 14 phases delivered, 1 in-flight, 3 planned, 1 waiting on observability.v1.
The in-flight phase wires content-pipeline decisions into the Advisor Brain's decisions.v1 ledger. Honest staged sub-triggers replaced an earlier vapor-config gate (the original "90% trust" criterion depended on the Brain's Phase 3 trust-meter mechanism which is still planned). The lesson... phase-trigger criteria must themselves be probe-verified to exist before being named as locked gates.
One architectural-decision Brain card landed alongside the project, queued for verdict on whether content-pipeline decisions should ride the unified Brain ledger or a sibling table with a promotion-to-corpus action. Either outcome preserves Preference 16... deliberation-as-learning. The card surfaces in the next morning digest.
The federation gate that the prior session walked back actually opens cleanly via the Supabase Management API endpoint nobody had publicly verified for inter-Supabase-project federation. The empirical gate session ran POST against /v1/projects/{ref}/config/auth/third-party-auth registering the issuing project as a "custom" OIDC issuer on the consuming project; received HTTP 201 with resolved_jwks populated synchronously in the response body (not async-polling as feared); confirmed byte-for-byte JWKS match against the issuer's live /auth/v1/.well-known/jwks.json endpoint; signed a user JWT on the issuing project; called the consuming project's PostgREST with that JWT in the Authorization header; received a single tenant-scoped row matching the JWT's app_metadata.qos_tenant_id claim through the project's qos_caller_tenant_id() helper. Anon baseline returned the empty array (regression guard satisfied: the result was JWT-driven, not policy drift). Federation cost = the one POST. Full evidence in .tmp/qsp-qos-empirical-gate-report.md.
Two empirical findings beyond the research-session prediction. First: resolved_jwks populates synchronously in the POST response body. The research had framed possible async settle-time or even silent-no-op (the same failure mode the legacy jwt_secret PATCH exhibits); observed reality was 30 seconds end-to-end from POST to JWT round-trip. Second: response type: "custom" auto-sets for any non-Supabase OIDC issuer even when only oidc_issuer_url and jwks_url are passed. The OpenAPI naming suggests "custom" means user-supplied JWKS; observed behavior is "custom" means non-first-class issuer (Supabase doesn't ship a Supabase-as-a-provider preset, so any sibling Supabase project is a custom issuer by definition).
The federation-pending feature gate flipped to false on the same arc (one-symbol cleanup contract executed cleanly per the file's docblock). The supporter visibility surface that shipped behind the placeholder in Session 345 now serves live tenant-scoped portfolio data on next sign-in. The brand identity pivot (emerald + green-tinted dark + Source Serif 4 + Inter), the VOSPA Roadmap module, the Cards/Table view toggle, the section structure (Active Projects + Planned + Tools Made For Us + Archived) all light up against real data. The supporter sees their portfolio.
supabase_tool_wisdom.md rewrites to v1.3.0. The v1.2.0 prerequisite subsection that described HS256 secret alignment as the V1 federation path is replaced with the empirically-verified Third-Party Auth Management API pattern. The Token Broker Edge Function pattern (the architecturally documented fallback) is preserved as "Alternative: the path we did not need" with full canonical implementation and trade-offs versus Third-Party Auth, in case Supabase ever restricts the Management API endpoint or our use case grows beyond what it supports. Legacy HS256 alignment is demoted to a clearly-labeled deprecation section with the historical context and the rotation cascade preserved for projects that haven't yet migrated to asymmetric. The Management API silent-no-op gotcha for the jwt_secret PATCH endpoint stays in the legacy section: still real, still a documented failure mode, captured in feedback_supabase_management_api_jwt_secret_silent_noop.md.
The verify-first signature #6 (architectural-tractability claims need vendor-doc verification before recommending) ran end-to-end across this arc. The advisor's initial Path A sketch (HS256 alignment) walked back when the dashboard surfaced both projects on asymmetric. The Path C sketch (asymmetric retires the problem class) walked back when research surfaced no native cross-project trust in Supabase Cloud's documented surfaces. The actual answer surfaced by working outside-in through the Management API endpoint catalog and verifying empirically. Three calibrations on a single architectural decision; each one shipped closer to the truth without committing the user to multi-hour build work that would have been wasted. The principle authored earlier in the same arc applied to its own author in real time, repeatedly.
---
vospa-roadmap.v1 ships as the eighth QOS programmatic-identity schema and the first one that mirrors live to a Supabase project. The schema (23.4KB, 21 $defs, JSON Schema Draft 2020-12) defines programmatic supporter project visibility ... active and planned VOSPA-program work delivered for each supporter, with phase baselines, actual progress, variance capture, and asset registry. The QWF root instance carries the six standard variance reason codes catalog (waiting-supporter-input, waiting-third-party, scope-change-supporter-request, under-estimated, agent-error, dependency-blocked). The first supporter child instance populates 5 active-project lanes across QWF programs (one archived as the historical artifact that birthed Quietly Spotting), 21 phases, 3 variance entries with cross-references to decisions.v1 for compounding into the Advisor Brain, and a 5-asset "Tools Made For Us" registry. The validator runs six checks: schema conformance, cascade policy, parent resolution, variance code integrity, asset projectId cross-reference, and an append-only stub for V1.5 git-history awareness.
Migration 0001 creates qos_tenants (cross-project tenant identity, mirrors sibling Supabase tenant rows) plus seven vospa_roadmap_* tables in the QOS Supabase project. RLS uses JWT-claim federation rather than a local profiles table ... auth.jwt() reads app_metadata.qos_tenant_id and app_metadata.is_qos_super_admin via two LANGUAGE sql STABLE helper functions, sibling Supabase projects issue the JWTs, and the QOS project enforces tenant scope plus vospa_tier-gating without owning user identity. Pattern named "Federation-Ready RLS via JWT Claims" and captured as a new subsection in supabase_tool_wisdom.md (bumped to v1.1.0) for reuse on every future QOS-mirror schema where one project owns the data and a sibling project owns the identity. The JSON-to-Supabase sync runs idempotent upserts with explicit on_conflict targets; running it twice produces identical row counts.
Two architectural principles named and captured during the build. First: "Bespoke-First, Augment-Selectively" ... build bespoke when nothing fits exactly; the shiny-tool patchwork trap is the 30-year habit to break; three layers (app-specific tenant data → bespoke Supabase, project planning + Gantt → augment with monday.com, long-haul people foundation → likely bespoke). Second: "Supporter Love Outranks Long-Term" ... when a long-term-correct path delays supporter value, look for a minimal-staged variant that delivers value while preserving posture; quality non-negotiable. Both principles were named and immediately exercised. The schema started as a comprehensive design and got calibrated to "minimal-staged" so the supporter sees value sooner, while remaining a real (not throwaway) bespoke schema.
qwu_naming_conventions.md bumped to v1.1.0 with a new "QOS Schema Naming: Domain-Prefix When Siblings Are Likely" subsection. The schema is named with a program prefix (vospa-roadmap, not roadmap) because future siblings are likely (forge-roadmap, mp-roadmap, qos-roadmap). Renaming a schema after instances exist breaks every cross-schema reference and supporter fork; naming for the future at creation time is essentially free.
QSP UI module ("VOSPA Roadmap" tab with Cards/Table toggle reading from the new mirror) and monday.com bidirectional sync are the next downstream surfaces. Sync pruning (orphan-delete pass keyed on the union of JSON ids) is queued for V1.5, triggered when supporter portfolio JSON loses a phase or asset.
---
The first user-facing consumer of vospa-roadmap.v1 schema data shipped this session ... and discovered the federation gate doesn't open the way the prior session sketched. Both the issuing project (Quietly Spotting) and the consuming project (the QOS Supabase mirror) had migrated to asymmetric ECC P-256 signing keys (the issuer three months ago, the consumer thirteen days ago). The legacy HS256 shared-secret alignment path that supabase_tool_wisdom.md v1.1.0's "Federation-Ready RLS via JWT Claims" prerequisite section described is dead for user session JWTs in the post-asymmetric-migration era; that legacy secret only verifies legacy anon and service_role API keys, not the user JWTs the federation pattern actually needs to authorize cross-project reads. The TWL section will be rewritten by the next session's research findings.
Path A (paste the issuer's HS256 secret into the consumer) walked back. Path C (asymmetric JWT migration retires the secret-alignment problem class) sounded directionally right and IS right for single-project security and rotation, but verify-first surfaced that cross-project asymmetric trust isn't natively configurable in Supabase Cloud either ... Third-Party Auth supports five named providers (Clerk, Firebase Auth, Auth0, AWS Cognito, WorkOS), with no Supabase-as-provider option, and OIDC Issuer Discovery isn't exposed on project endpoints natively. Token broker via Edge Function remains the architecturally documented path; Third-Party OIDC custom config is uncertain pending dashboard investigation that requires authenticated dashboard access. A fresh local research session takes the next pass with full investigation surface; the kickoff for that session lives at 002 Projects/_Quietly Spotting/Kickoff-Prompts/qsp-qos-third-party-auth-research-kickoff.md and includes a proposed TWL rewrite as a deliverable so documentation lands corrected with the architecture.
The supporter visibility surface ships anyway via a federation-pending shell. Single-symbol feature gate at src/integrations/qos/federation-pending.ts toggles placeholder vs live data with the full cleanup contract documented in the file's docblock; flip one symbol when federation lands and three sibling consumers re-engage automatically. Supporter sees the new visual identity on next sign-in; live portfolio data lights up when federation closes its own session.
Two corpus moments captured this session. Verify-first signature #6 created and saved to feedback_verify_first_report_signature.md ... architectural-tractability claims need vendor-doc verification before recommending a path that commits the user to multi-hour work, not after the user agrees. The asymmetric-JWT walkback was the principle authored earlier in the same arc being applied to its own author in real time. Verify-first principle #1 calibrated with a grep-before-cite mechanical discipline annotation ... two file:line drift incidents in the same loop (Senior Reviewer cited memory line 14, actual was 16; executor cited four cleanup-contract lines off by 2-12 each in the federation-pending shell ship) earned the permanent annotation that estimating line numbers from memory drifts and the fix is mechanical.
Five-session arc closed clean. Schema-first held end-to-end across all five rounds; voice fidelity, naming conventions, supporter anonymity, ellipsis discipline, and six verify-first signatures all held. The federation question is real and unanswered; the supporter sees the new identity on next sign-in; the architecture lands its own session when research returns.
---
The QWF Advisor Brain has its public home. brain.quietlyos.org went live as the sister surface to quietlyos.org... where this site shows WHO QWF is (the schemas), brain.quietlyos.org shows HOW it decides (the choices and the WHY behind each one, captured at the moment of choice). The Brain itself is the operational HOW-layer that complements QOS; the Wisdom Library is a separate artifact handling what the org KNOWS. Three distinct artifacts, one companion architecture.
Phase 0 ships the foundation only: hero with the locked mission-thesis line ("The Brain grows because it gets corrected..."), the three-verdict reinforcement loop table (Approved / Approved+Reinforcement / Redirected+Reinforcement), the OS+Brain architecture diagram, the build map (27 nodes; 7 shipped, 20 planned), honest Phase 2/3 placeholders for the live ledger and trust meters that come later, the open-standard cross-link back here. No live ledger entries yet; the runtime is Phase 2.
Schema reuse: BRAIN.development-map.json validates against the same qos_development_map.v1.schema.json this site uses, with identity differentiation via identity.shortName "BRAIN". No fork in Phase 0. The map renders via build-time bake into the SvelteKit page; sweeps (em-dash scrub, supporter-anonymity, youth-protection framework, hand-applied TIG-personal toggle) all run before the client receives any prose. New repo at github.com/QuietlyWorking/quietly-brain; CF Pages project quietly-brain on Direct Upload mode mirroring this repo's deploy pattern. Four endpoints (canonical brain.quietlyos.org plus three redirect variants) with Google Trust Services SSL.
Footer cross-link added here under the Standard column ("Advisor Brain"). Sister-surface symmetry: brain.quietlyos.org footer + Open Standard section + Hero CTA all link back to quietlyos.org. Both sites are now reachable from each other.
---
Brand schema v2.4 ships. Voice extracts atomically out of brand for QWF and QWR; it now lives in voice.v1 where Hemingway-clarity rules belong. Brand keeps identity, heritage, audience, visual, messaging, credentials, and policies; voice owns voice. The unbundling pattern that began with v2.3 (values out) completes at v2.4 (voice out). Brand is no longer the god-object. It is one schema among the family.
voice._migrationNote field per Sacred Guesthood. Each supporter migrates voice into voice.v1 in their own dedicated authoring session, on their schedule, with their consent. We are guests with elevated privileges, not owners.voiceRef and valuesRef cross-pair pointers join the schema. QWF and QWR brand instances now declare which voice.v1 and values.v1 files they pair with. The validator confirms the targets resolve. Supporters skip silently because their refs are absent... that is correct schema-permitted behavior, not a gap.validate_brand.py ships v1.1.0 with two checks in one entry point per the cognitive-load discipline (one validator users learn, two checks it runs). Structural check validates each instance against the matching schema generation. Cross-pair check confirms voiceRef and valuesRef targets exist on disk. The new SCHEMA_DISPATCH lookup table reads meta.schemaVersion off the instance and routes to the matching schema file, so the validator now spans v2.2, v2.3, v2.4 and earns its keep across any future v2.x bump without constant edits.schemaVersion (structural) and brandVersion (content changed substantively because voice removal is content motion). Supporter brand files bumped only schemaVersion... their content did not change... and held brandVersion at original values. Each version field tracks its own concern. Bumping in lockstep is the noisy default; orthogonal is the semantic-accurate one.p1.brand.v2-x changelog. No empty marker commit on the qwu_backOffice repo. Discoverability for "where did v2.4 ship?" was already met three times over: the C1/C2/C3 commits are greppable by brand.v2.4, the Decision Ledger holds the audit trail, and the dev-map state machine flags the family at v2.4 as canonical. Adding a fourth surface to capture the same answer is the kind of redundant complexity that has to earn its place. It did not.Phase 1 milestones unchanged in count (brand.v2-x was already shipped; v2.4 is a sub-ship within the v2.x family). The corpus grew though... the C4 review captured the principle test that justified the no-marker path: "is the concern already met by existing surfaces?" not "does the concern matter?" That shape repeats... atomic cutovers over deprecation windows, separate roots over flag fields, no-new-surface over redundant-surface. Resist additions when existing surfaces already capture the concern.
---
content.v1 ships as the third QOS programmatic-identity schema after values.v1 and voice.v1. The CLAUDE.md generator goes from 2-source to 3-source in the same atomic cutover. Phase 1 schema layer moves from 6/14 to 7/14 shipped. The 5 content ABSOLUTE patterns now render as HARD RULE blocks in CLAUDE.md, satisfying defense-in-depth on absolutes for content the same way voice principles already satisfy it for voice.
content.v1 ships with the schema family, the QWF root and QWR child instances, validate_content.py with 5 checks (structural, em-dash leak with path-scoped exemption, cross-schema ref resolution, articleDNA cascade, schema-version dispatch), resolve_content.py with the new lineage-channel cross-schema ref pattern (137 cross-schema refs resolved at C3 with zero unresolved), and a 14-scenario regression test for the em-dash exemption. The schema is the first QOS schema where the resolver fetches data from sibling schemas at resolve time. The pattern works.
The lineage-channel pattern is the architectural lesson. The original design said "inline the resolved content into the resolved output" so a downstream consumer reading QWF.content.resolved.json would see the actual voice and values content next to the original ref. That design FAILED schema validation... the schema sets additionalProperties: false on every typed object, which makes _resolved_voiceRef-style sibling keys illegal. The pivot: cross-schema refs record as STRING ENTRIES in _resolution.lineage (e.g., "_xref:voice.tonePresets.tone-formal: cross-schema-resolved"). The cost: downstream consumers re-resolve. The benefit: resolved files stay schema-valid AND ref integrity is enforced AND the C4 generator already re-resolves at render time anyway. The lineage-channel pattern is now QOS-canonical for resolvers.
generate_claude_md_block.py refactored from v1.2.0 to v1.3.0. SCHEMA_REGISTRY adds content as the third source. Composite SHA expands to sha256(values_sha + voice_sha + content_sha). The marker line in CLAUDE.md exposes 4 SHAs for drift attribution. Three new renderers added: render_content_article_dna_block (per-article-type DNA, currently scaffolded for future contextual-priority emission), render_content_forbidden_article_patterns (HARD RULE blocks for the 5 ABSOLUTE patterns, residual table for OPERATIONAL), render_content_encouraged_article_patterns (the encouraged patterns table). Backward-compat shim verified: missing content.resolved.json gracefully degrades to values+voice rendering with hash-stable fallback. The composite-SHA marker line is now stable across 1-source, 2-source, and 3-source generation; the same generator scales to all remaining QOS schemas without managed-block format churn.
The far-end E2E passed cleanly. A fresh Claude Code agent with no prior context read the regenerated CLAUDE.md and ran 4 adversarial scenarios: a transparency article missing the QSP+ecosystem reference, a year-end donor email leading with tax-deductible-as-incentive, a youth newsletter blurb naming a 16-year-old by first name plus tool plus tenure, a transparency paragraph naming a fabricated supporter org and individual. The fresh agent caught all 4 violations on first instinct and self-corrected against the exact HARD RULE blocks, quoting them verbatim. Voice signatures (the "Three minutes without hope" framing, ellipsis-only punctuation, the "Quietly working. Always in their corner." sign-off) emerged naturally in the corrections. Voice.v1 from yesterday's atomic cutover is also load-bearing.
Phase 0 priority discipline applied. The section-content-article-dna section dropped from priority: startup to priority: contextual with contextTrigger: "authoring an article". Per-article-type DNA is per-task detail; the universal forbidden patterns and encouraged patterns stay at startup because they apply to all content authoring regardless of type and need to be in the agent's context window from session start. The rule is "per-instance detail at contextual; cross-instance universal rules at startup." Generalizes across schemas.
A defensive observation surfaced for next-session work: CLAUDE.md contains 76 em-dashes in hand-written sections OUTSIDE the QOS-managed block (foundational directives table, QWF App Registry, Tool Wisdom Libraries table, Infrastructure Access section). These predate the QOS rulebook's ellipsis-only mandate and were not introduced by this cutover. A dedicated em-dash-scrub gate is queued as the next-session priority... the rulebook teaching one rule while modeling 76 violations in hand-written sections is a credibility gap that compounds. Path forward: focused single-session scrub, one commit, no agent-orchestration overhead.
Phase 1 milestones: Milestone A (Schema Layer Complete) sits 7 p1 nodes away (was 8). Milestone B (Schema plus Values Editor) sits 8 nodes away. Total Option C: 18/49 (37%). The next logical work queue: the CLAUDE.md em-dash scrub gate, then decisions.v1 (Phase 1 of the Advisor Brain, which was blocked behind content.v1 and is now unblocked).
The collaboration pattern: this session was the second to ship under the advisor-as-orchestrator contract (after voice+universe yesterday). The pattern continues to validate. TIG verdicted 5 Items Awaiting Explicit Verdict per Preference 11 (no-silent-approval-during-brain-formation). The corpus is at 15 preferences plus 2 Preference 4 refinement notes; the corpus-formation period continues with full discipline.
---
Two QOS schemas landed in a single session: voice.v1 and universe.v1. Phase 1 schema layer moves from 4/14 to 6/14 shipped. Total Option C completion: 17/49 (34%). The session also validated a new collaboration pattern (advisor-as-orchestrator), proved out the first cross-schema rule relocation in QOS history, and refactored the CLAUDE.md generator from single-source to multi-source.
voice.v1 ships as the second QOS programmatic-identity schema after values.v1. The family includes the schema, the directive, the QWF root and QWR child instances, the validator with a 14-scenario regression test for the path-scoped em-dash exemption, the resolver with full lineage tracking, and the resolved artifacts for both QWF and QWR. The QWR resolved file carries 112 lineage entries (97 from-parent, 11 from-child, 2 merged, 2 overridden-by-child), proving the cascade contract holds end to end. Stress tests demonstrate the constitutional invariants: child cannot remove parent forbiddenPatterns, child cannot lower OPERATIONAL severity, ABSOLUTE principles cannot be redefined, free-form maps merge with key-level override.
The em-dash forbidden-pattern rule migrated atomically from values.v1 to voice.v1 in the same commit that shipped voice.v1. No deprecation window. No dual-source visibility gap. Voice owns voice rules; values keeps values rules. Punctuation discipline conceptually belongs in voice (Hemingway-clarity), not in values (craftsmanship). The 8-step cutover sequence shipped as the proven pattern for future cross-schema relocations: backup CLAUDE.md, edit the source schema, re-resolve both schemas, regenerate the managed block multi-source, machine-verify, diff-verify, run far-end E2E with an independent fresh agent, single staged commit. The far-end agent caught both spaced and unspaced em-dash variants on first instinct after reading the post-cutover CLAUDE.md, which is the inbox-side proof that the rule is still load-bearing in agent context.
universe.v1 ships as the canonical map of the QWF app family. The QWF.universe.json instance catalogues 88 QWF-owned domains (70 apex zones plus 18 subdomains under quietlyworking.org), 17 apps spanning all live programs plus foundation entries, 18 cross-app relationships (SSO via QWF Passport, QSP data-share patterns, QOS schema dependencies), and the canonical 9-satellite ecosystem widget configuration with QSP at center. Supporter-owned and TIG-personal-legacy zones (50 registry-behind items) stay excluded per Sacred Guesthood and the supporter-anonymity discipline; they belong in their own universe roots when authoring begins. The validator runs 4 checks (structural, cross-reference, App Registry parity, ecosystem widget completeness) and the sync script reconciles against the Cloudflare API in dry-run mode. The directive documents three downstream consumers (build-time widget, build-time cross-app navigation, future Supabase-fanout runtime consumers), the Supabase universe_definitions table shape, and the widget refactor pointer for a future session.
generate_claude_md_block.py refactored from v1.1.0 to v1.2.0, single-source to multi-source. Composite SHA composes per-source SHAs in SCHEMA_REGISTRY order, so any source-file edit busts the in-sync check while each source SHA still surfaces in the marker for drift attribution. Renderer dispatch is keyed on (source, formatTemplate), so two schemas can share the same formatTemplate name (forbidden-table) without coupling. ABSOLUTE-severity items render as HARD RULE blocks regardless of source, so voice ABSOLUTE principles (Hemingway Clarity, Humor That Never Costs) get the same visual prominence as values absoluteRules. CLAUDE.md regenerated cleanly with 4 new sections appended (Voice Principles, Forbidden Voice Patterns, Encouraged Voice Patterns, Voice Signatures); the em-dash row migrated from the values forbidden-vocabulary section to the new voice forbidden-patterns section, with zero rule-visibility gap. The multi-source generator earns the right to host more schemas in the future (content.v1, people.v1, tools.v1) without touching the managed-block format again.
The collaboration pattern: this session was the first to run two parallel agent threads through four checkpoints each under an advisor-as-orchestrator contract. Eight checkpoint reports surfaced. The advisor reviewed each, escalated only the architectural calls and the SHIP gates to TIG, and handled routine refinements without surfacing. Zero autonomous commits. The pattern proves the operational replacement target the QWF app family is building toward, applied to the meta-layer: the advisor stops being a thing the founder operates and becomes a thing the founder supervises. The compass test passed all five lines.
Phase 1 milestones: Milestone A (Schema Layer Complete) sits 8 p1 nodes away (was 10). Milestone B (Schema plus Values Editor) sits 9 nodes away (was 11). Full Option C is 32 nodes away (was 34). The next logical work queue: brand.v2.4 (strip voice.vocabulary.* now that voice.v1 is field-proven), content.v1 (voice.v1 unblocks it), people.v1 plus tools.v1 (parallel-safe pair).
---
Landing page copy update to reframe the three planes as the standard, not the QWF app family.
The EXECUTION card now names the real reference implementation: QWB for sites, QWR for articles, QNT for chapters, plus sibling apps for quoting, tracking, and outreach. Pattern stated plainly: LLMs decide, code executes.
Added a paragraph below the three cards: QOS is a standard. The QWF app family is one reference implementation... the one that eats its own dog food. Fork the schemas. Build your own control/execution/observation layers. The contracts in the JSON are what matter, not the specific apps around them.
Why the change: visitors were reading the three cards as "you need QOP + QWB + QSP to do this." That's backward. You need JSON schemas that separate control from execution from observation. The QWF apps are one way to implement that split, not the only way.
---
generate_claude_md_block.py now reads a resolved values.json and writes a marker-block section into CLAUDE.md. Every Claude Code session opens with TIG's compass, hard rules, forbidden vocab, encouraged vocab, decision filters, and ethical boundaries injected structurally, not remembered.
Values.v1 is load-bearing. The schema stopped being a spec and started being infrastructure.
The generator is a standalone Python CLI plus importable module. No Jinja2, no template engine... f-strings only. Flags: --org, --target, --dry-run, --force, --rollback. Anchor: the block inserts immediately before ## Directive Structure and owns its own H2 heading inside the marker span so rename protection works. Every write atomically backs up the prior CLAUDE.md to .tmp/claude_md_backups/. Hash in the BEGIN/END markers matches the source values.json payload with _resolution stripped, so drift detectors can pair begin/end and lineage churn doesn't bust the hash.
Eats its own dog food. Every prose string the generator emits into CLAUDE.md or stdout uses ellipsis, never em dashes. When a source field leaks an em dash, the generator substitutes to ellipsis at render time AND logs a warning to stderr with the exact field path... so drift surfaces noisily rather than hiding forever. The one permitted em dash lives inside the forbidden-table Pattern column for the punctuation-em-dash rule, where the character is the specimen being documented (labeled test-fixture pattern).
Four tests green: insert, idempotent re-run (in-sync, no write), --force regeneration, and --rollback restoration. On the first write, QWF.values.json got mutated externally between runs (quietlyos.com → quietlyos.org in two places), and the idempotency test initially failed... turned out to be correct behavior. Source changed, generator regenerated. The retest with stable source passed cleanly.
One known limitation to close in a follow-up session: resolve_values.py cannot self-resolve a root file (no parent to cascade from). The generator currently side-steps this by wrapping unresolved roots with a trivial _resolution block at read time. Fix: add --root flag or auto-detect no-parent case in resolve_values.py. Scope for another session.
---
Brand schema v2.3 ships. Eight sections now migrated out of brand into values.v1: identity.values[], content.youthProtection, content.unifiedIdentity, voice.punctuation.forbidden, voice.vocabulary.{forbidden,encouraged,use}, inheritance.absoluteRules. The drift window where youth-protection and unified-identity rules lived in two schemas at once is closed. Single source of truth on each concern is back. QWR's production brand_resolved Supabase view now returns v2.3 data end-to-end.
standard, canonical_home, license, description) landed at both schema-level and on every instance. Every brand file now self-identifies as a QOS artifact with a link home. Convention documented in memory/feedback_qos_schemas_are_reference_implementations.md.SchemaVersion is now a oneOf union: semver string ("2.3.0") preferred, legacy integer accepted. Backward-compatible. Latent bug surfaced immediately: the Supabase schema_version INT column rejected "2.3.0" on upsert. Fixed by projecting major version into the column while keeping full semver in brand_json.meta. Two commits: the v2.3 refactor + the sync-script projection fix.QWR.resolved.json renamed to QWR.brand.resolved.json. Pattern is now {shortName}.{schema}.resolved.json across the 13-schema family. The file is a generated artifact for debugging and fixtures only... the live brand_resolved Supabase view is populated by in-memory resolution during sync, not by reading filesystem files.identity.values[] and voice.vocabulary.* locally under additionalProperties: true. They are not QWF-values-derived and await their own <ShortName>.values.json and voice.v1 migrations. Catalogued in the directive's new Remaining Migrations (Post v2.3) table (17 rows, 4 columns).QWF.values.json + QWR.values.json canonical_home corrected from .com to .org. values.v1.schema.json itself still has .com at schema-level... one-line edit deferred to next session (logged in Open Questions).Phase 1.5 of the Programmatic Identity System. Phase 2 is voice.v1.schema.json (extract from brand.voice) and the first supporter-brand values.json. Brand is no longer the single god-object for identity. It's one schema among 13, each owning its own concern.
---
The known limitation flagged in the CLAUDE.md Generator entry is closed. resolve_values.py ships as v1.1.0 with a public resolve_root(values) function and auto-detect on inheritance.parent === null. Root files now produce canonical <shortName>.values.resolved.json artifacts on disk just like children do... QWF.values.resolved.json now exists next to QWR.values.resolved.json, closing the asymmetry that consumers had to work around.
Auto-detect is the default path. A --root flag is available as a defensive override for corrupted files where inheritance.parent might be misleading. Zero friction for all future callers... voice.v1, content.v1, universe.v1, and the remaining nine schemas in the 13-schema family now inherit the clean root-handling pattern from day one instead of duplicating the wrapper workaround in each generator.
generate_claude_md_block.py shipped as v1.1.0 alongside. The in-memory ensure_resolved() self-wrap (55 lines) is gone. The reader is strict now: requires <org>.values.resolved.json on disk, sanity-checks the _resolution block on load, refuses unresolved source files with a clear error that points to the fix command. No more silent fallback paths. Drift cannot hide.
Verification was rigorous. QWF payload SHA256 matched prediction exactly (40953847...), confirming the refactor is semantically pure... moving content from "root read and wrap in-memory" to "root write to disk then read" changed zero payload bytes. CLAUDE.md managed-body diff was exactly 2 lines, both markers flipping source: QWF.values.json to source: QWF.values.resolved.json. The 119 rendered lines of compass, hard rules, forbidden table, encouraged table, decision filters, and ethical boundaries preserved byte-for-byte. Zero em-dash substitutions at render time.
One serialization artifact surfaced: QWR.values.resolved.json regeneration reshuffled key ordering in meta and coreValues.craftsmanship without changing semantic content. Sort-keyed canonical payload stayed stable. All 41 cascade lineage entries reproduced identically... craftsmanship still severity-raised, voice-fidelity and the four other QWR additions still from-child-added. File-level sha256 drifts were serialization noise, not cascade-behavior changes. Worth a one-time resolve of every child file whenever sources change, to keep committed artifacts in lockstep with fresh resolver output.
Phase 1 of QOS is fully load-bearing now. Next session opens directly to voice.v1.schema.json design... the resolver unblock paid once saves every downstream schema.
---
The map that describes the QOS build journey is itself live on quietlyos.org. QOS under QOS... schema + instance + tooling + session-wrap-up integration + public render, all load-bearing together. The artifact is itself a reference implementation... JSON source of truth, deterministic renderer, drift validator, auto-update through session-wrap-up. 49 nodes across 6 phases trace the journey from VOSPA origin (the 30-year consulting methodology) through schema layer, consumption layer, QOP edit UI, A/B testing, and open-standard publication.
Four checkpoints landed in one session. Checkpoint 1 drafted the schema with 8 $defs, a 6-state status vocabulary, enforced legal transitions, self-identifying QOS meta, and phase-prefixed kebab-case node ids with a 2+ segment minimum. Self-valid under Draft 2020-12. Checkpoint 2 authored the instance; Phase 0 nodes declare real vault artifacts (VOSPA methodology, the 5-line compass, personal dreams, the Duct Tape series, the QOS reference-implementation convention, the three-plane architecture) so the drift validator applies uniformly from day one. Every shipped node's files[] was verified against the filesystem before the initial commit.
Checkpoint 3 shipped three tooling scripts together as the p2 consumption layer for the map... validate_qos_development_map.py runs the 8 checks, toggle_development_map_node.py enforces the legal state graph and calls validate internally before any write (drift cannot bypass the toggle entry point), render_qos_development_map.py emits ASCII for the vault and HTML for quietlyos.org with supporter-anonymity sweep and em-dash scrub. The same checkpoint consolidated four dev-map-specific nodes into a single in-flight p1.qos.development-map so the node cannot claim shipped until every piece is load-bearing... eat-your-own-dog-food applied to the tracking artifact itself.
Checkpoint 4 integrated. An additive step in the session-wrap-up skill asks which nodes each session touched and calls the toggle for each; the step supports none as a valid answer, loops over multiple transitions, logs every transition to the session summary, and surfaces failures loudly without aborting the wrap-up. On quietlyos.org, DevelopmentMap.svelte imports the instance JSON at build time, re-runs the supporter-anonymity sweep and em-dash scrub in TypeScript as a build-time guarantee, and renders between the Working Manual and Reference Implementation sections. End-to-end verification used p1.wisdom.v1 (not p1.voice.v1, which enters real work soon) as a test node, transitioning planned to in-flight, confirming the update on live quietlyos.org, then reverting so no test state persists on the public site.
The final verification is the map validating itself by its own completion. This entry is the working_manual_entry referenced by p1.qos.development-map in the shipped instance. When the CF Pages deploy reflecting this commit lands, the node transitions in-flight to shipped in the same render that reports it shipped. The map tells the truth about itself because the code forces it to. Milestone A sits 10 p1 nodes away; Milestone B adds the Values Editor behind that; Milestone C is 34 nodes beyond. Distances computed deterministically at render time... they cannot drift.
Phase 0's root is VOSPA itself. The methodology predates the map by 30 years. The map is a legacy artifact tracing VOSPA's democratization from consulting engagement to JSON contract to open standard.
---
First QOS schema complete. values.v1.schema.json plus a reference implementation (QWF.values.json + QWR.values.json), a cascade-enforcing resolver, and a Values Editor build spec. 4,635 lines across 7 files. Phase 2 is voice.json plus the brand.v2.3 refactor.
The values layer encodes TIG's 5-line compass structurally: people first, wisdom as fuel, values as compass, curiosity plus focus for balance, love for legacy. Cascade policy enforces ABSOLUTE rules across children. The resolver catches 6 classes of cascade violation at resolve time... not at review time.
values.v1.schema.json (15 $defs, 519 lines)QWF.values.json (33 embedded tests, 1,201 lines)QWR.values.json (override-only child, 207 lines)QWR.values.resolved.json (auto-generated with full lineage, 1,369 lines)validate_values.py + resolve_values.py (production CLIs)Values-Editor-Spec-v1.md (buildable spec for first QOP page)---
The public home for QOS is live. v1 is a scroll-driven landing page... road sign plus coming soon... sharing the vision, showing the live build via this Working Manual, and collecting "keep me in the loop" signups.
Built on SvelteKit (Svelte 5 runes), deployed to Cloudflare Pages, signups stored in a dedicated Supabase project. Canonical quietlyos.org; .com and www.* hosts 301 to canonical.
Five bugs caught during the ship. All five became durable wisdom in the QWU Cloudflare Pages tool wisdom library:
PUBLIC_* env vars... they bake into the client bundle at build time and need to be GitHub Actions secrets, not just CF runtime secrets..catch() never fires because the promise is cancelled, not rejected. Silent email drop. Fixed by awaiting the Graph API call synchronously.functions/_middleware.js is silently ignored when SvelteKit's _worker.js runs. Middleware belongs in src/hooks.server.ts.hooks.server.ts. CF's edge serves the static HTML directly without invoking the worker, so canonical-host redirects never fire for prerendered routes. Fixed by removing export const prerender = true and reading repo files via Vite's ?raw import.Signup form works. Notification lands in TIG's inbox with a link straight to the Supabase row.
This Working Manual updates itself during every /session-wrap-up that ships QOS-relevant work. No roadmap theater. Just what shipped, when, and what was real.
---
New entries get appended during the QWU backoffice's /session-wrap-up skill. The site rebuilds in ~60 seconds on push. Transparency in practice.
QOS under QOS. The map itself is a reference implementation... same JSON-source-of-truth, deterministic-renderer, drift-validator, auto-update pattern every QOS schema follows. 18 of 49 nodes shipped (36%).
Shipped 18 of 49 (36%)
1 spec-only:
p3.qop.values-editor ... Values EditorPlanned 30
What predates the schema work. VOSPA as 30-year consulting methodology, TIG's compass, personal dreams, teaching artifacts, and the principles that shape every later phase. The origin phase anchors the journey in legacy, not just infrastructure.
p0.architecture.three-plane Three-Plane Architecture (QOP/QWB/QSP)Control / Execution / Observation split across three QWF apps. QOP (Quietly Operating) hosts the edit UI, QWB (Quietly Webbing) deploys supporter sites deterministically, QSP (Quietly Spotting) visualizes current state, A/B results, change history. Distributed-systems write/execute/read separation applied to organizational identity.
p0.compass.5-lines TIG's 5-Line CompassPeople = #1 priority. Wisdom = fuel. Values = compass. Curiosity + focus = the balance that keeps life a beautiful adventure. Love = ensures life turns into legacy. Surfaced 2026-04-22 and structurally encoded into values.v1 the same day.
p0.qos.reference-implementation-convention QOS Schemas Self-IdentifyEvery QOS schema ships with meta.standard='QOS', meta.canonical_home='https://quietlyos.org', meta.license, and a meta.description self-identifying as a reference implementation. Turns internal schemas into public artifacts at the moment they're authored.
p0.series.duct-tape Duct Tape to Rocket Ship Series26-article curriculum teaching VOSPA progressively over six stages (Inspiration, Demystification, Practical Whys, Setup, Usage, Archer's View). Serves the Inspired, the Builder, and the Buyer in one long-form artifact. Simultaneously VOSPA-as-education and VOSPA-as-marketing.
p0.tig.dreams TIG's Personal DreamsThe post-replacement purpose that QOS serves. QCP legacy storytelling, Splinter sci-fi, the 7 Steps series, FORGE physical space, operational replacement so TIG can focus on appreciation and discovering the next demographic to support. Every build decision checks against these dreams as well as the compass.
p0.vospa.origin VOSPA 5-Layer MethodologyVOSPA... Values, Organization, Story, People, Automation plus Diagnostics. TIG's proven 5-layer consulting framework, delivered as human consulting ($10K+/mo) across 30+ years of engagements. Every QWF app programmatizes a piece of it.
The 13 programmatic-identity schemas of QOS (values, brand, site, voice, universe, interconnect, content, tools, wisdom, people, automations, metrics, passport) plus the development-map schema itself. Each schema defines its concern as a JSON contract with inheritance, cascade policy, and self-identifying meta.
p1.brand.v2-x brand.v2.x Schema + Instances + ResolverBrand schema family (currently v2.4). 30 top-level sections, JSON Schema Draft 2020-12, merge-policy.json with 124 paths and 10 strategies, Python resolver (8 of 11 strategies), production instances for QWF and QWR plus three supporter-brand roots. v2.3 migrated values-bearing sections out to values.v1; v2.4 atomically extracted voice into voice.v1 for QWF and QWR (supporter brands retain inline voice with _migrationNote per Sacred Guesthood) and added voiceRef + valuesRef cross-pair pointers.
p1.content.v1 content.v1 Schema + InstanceArticle DNA schema. Required section structure, per-audience variants, forbidden vocab enforcement, JSON-LD / Open Graph / Twitter Card defaults, canonical-URL rules. Governs transparency.quietlyworking.org, chaplaintig.com, and every in-app content surface.
Depends on: p1.voice.v1,p1.brand.v2-x
p1.qos.development-map QOS Development Map (Schema + Instance + Tooling + Integration + Public Render)The QOS Development Map as a whole QOS-under-QOS artifact. Schema (Checkpoint 1), instance (Checkpoint 2), tooling render + validate + toggle (Checkpoint 3), session-wrap-up skill integration and quietlyos.org public render (Checkpoint 4). Transitions to shipped only when every piece is load-bearing. The map passes its own drift check from day one.
p1.site.v1 site.v1 Schema + Primitive InventorySite composition schema. 22 canonical primitives across 74 variants (hero, features, testimonials, ctaBand, navHeader, footer, faqAccordion, gallery, teamGrid, processSteps, etc). JSON Schema Draft 2020-12, render-agnostic. Paired with a 206-line primitive inventory.
p1.universe.v1 universe.v1 Schema + InstanceApp family composition schema. Describes QWF's 24 quietly* Cloudflare domains as a single connected ecosystem... app relationships, visibility rules, cross-app redirects, ecosystem widget driver data.
p1.values.v1 values.v1 Schema + Instances + ToolingFull values layer of QOS. JSON Schema Draft 2020-12 with 15 $defs, root and child instance files, resolved artifacts with per-item lineage tracking, cascade-policy-enforcing resolver (6 violation classes caught at resolve time), validator (structural + cross-reference + em-dash leak + test-fixture shape), and a buildable Values Editor spec.
p1.voice.v1 voice.v1 Schema + InstancesStandalone voice schema extracted from brand.voice. Personality, tone, vocabulary, signatures, emoji palette, principles, samples, red flags. First targets: QWR product vocab (amplify / voice / story / ghostwriter) and supporter-brand vocabulary currently living in brand.v2.3 under additionalProperties: true.
Depends on: p1.values.v1,p1.brand.v2-x
p1.automations.v1 automations.v1 Schema + Instancen8n workflow registry plus Python execution script catalog. Every automation described with purpose, inputs, outputs, side effects, trigger, owner, and on-failure behavior.
p1.interconnect.v1 interconnect.v1 Schema + InstanceLink graph schema. Rules for when App A links App B, reader journeys, canonical-article cross-references, auto-link enforcement across transparency content and chaplaintig.com.
Depends on: p1.universe.v1
p1.metrics.v1 metrics.v1 Schema + InstanceMeasurement schema. KPIs, dashboards, per-VOSPA-layer health signals, alert thresholds, data sources. Unifies the existing QSP metric surfaces (BrightLocal, Betterstack, Supabase logs, Azure costs) into one machine-readable declaration.
p1.passport.v1 passport.v1 Schema + InstanceQWF Passport cross-app auth schema. Formalizes the currently-operational single-sign-on as a declarative config (apps, scopes, trust levels, redirect URLs, session lifetime).
p1.people.v1 people.v1 Schema + InstanceOrg structure schema. Roles, leadership, credentials, team relationships, youth-program boundaries (no PII pre-employment, etc). Compatible with brand.relationships.leadership today; formalizes the person-as-first-class-entity pattern.
p1.tools.v1 tools.v1 Schema + InstanceTool inventory schema with TWL pointers. Every tool in the QWU stack... Claude, n8n, Supabase, Lovable, Atlux, UE5, Obsidian, BrightLocal, GSAP, Astro, Starlight, SvelteKit, Cloudflare Pages, DaVinci, HeyGen, Descript, FFmpeg, and more... as a machine-readable registry.
p1.wisdom.v1 wisdom.v1 Schema + InstanceWisdom registry schema. Open question on storage mode: inline in schema instances, DB-registry (the existing wisdom.db), or hybrid. values.v1 uses the hybrid pattern (inline why + optional sources[] pointing at vault paths or wisdom ids); wisdom.v1 formalizes the registry side.
Code that reads the schema instances and produces downstream value... CLAUDE.md injection, Supabase views, deterministic renderers, TypeScript clients, n8n readers, dev-map tooling, session-wrap-up integration.
p2.consumption.brand-supabase-sync Brand Supabase SyncReads brand files, resolves via Python resolver, upserts into brand_definitions table; populates brand_resolved Supabase view that production QWR reads via PostgREST. 5 rows seeded; production runtime.
Depends on: p1.brand.v2-x
p2.consumption.claude-md-injection CLAUDE.md GeneratorReads resolved values.json + voice.json + content.json, renders startup-priority agentContext.claudeMdSections into a single managed Markdown block inside CLAUDE.md. Marker block with composite-SHA plus per-source SHAs for drift attribution, atomic writes, backup to .tmp/, rollback flag, dry-run mode. Eats own dog food: em-dash scrub with stderr drift warnings plus end-of-run substitution count. ABSOLUTE-severity items render as HARD RULE blocks regardless of source. Backward-compat shim allows graceful degradation if any optional source is missing.
Depends on: p1.values.v1,p1.voice.v1,p1.content.v1
p2.consumption.qwb-conversion-pipeline QWB Conversion Pipeline4-stage lifecycle pipeline that migrates supporter sites to the QWF stack: scrape + parse + convert + deploy. Deterministic renderers (48+), asset registry, sandbox parity checks, lint gate, sign-off checklist. No LLM in the conversion path (Session 249 proved LLM leaks trust).
Depends on: p1.site.v1,p1.brand.v2-x
p2.consumption.n8n-workflow-reader n8n Workflow Canonical ReaderReads automations.v1 instance and generates n8n workflow env-var configs, trigger schedules, and HQ alert webhooks declaratively. Bridges the gap between the automations registry and the running n8n server.
Depends on: p1.automations.v1
p2.consumption.site-validator site.v1 ValidatorDedicated validator for site.v1 instances. Structural (jsonschema), cross-reference (brand_ref resolves, primitive+variant combos exist in PRIMITIVE_INVENTORY), content (forbidden-vocab lint against resolved brand values), pattern-parity with lint_sandbox.mjs's 5 checks.
Depends on: p1.site.v1
p2.consumption.typescript-resolver TypeScript Resolver ClientTypeScript reimplementation of the Python resolvers (brand, values, voice, universe, content) as a client library SvelteKit apps import and hydrate. Mirrors the merge-policy + cascade-policy behavior so client-side resolution matches server-side.
Depends on: p1.brand.v2-x,p1.values.v1
The Control plane. SvelteKit app (QOP... Quietly Operating) hosts one editor page per schema. Sliders, forms, version history, variant forking. Operators edit truth here; every other system reads it.
p3.qop.values-editor Values EditorFirst QOP page. Edits values.json via sliders, forms, version control, 'test your policy' fixture runner, cascade visualization, audit log. 12-section buildable spec covers information architecture, 5 UX flows (with auto-save-and-resume on Flow A), per-JSON-path UI element catalog, full CLAUDE.md generation template, Postgres DDL for version history.
Depends on: p3.qop.app-shell,p1.values.v1
p3.qop.app-shell QOP App ShellSvelteKit scaffold for the Control plane. Auth (QWF Passport), routing, layout, dark-mode-default theme, Supabase client, Pacific timezone utility, nav structure for 14 schema editors. Foundational shell that every QOP editor lives inside.
Depends on: p1.values.v1,p1.passport.v1
p3.qop.automations-editor Automations EditorEdits automations.v1 instance. Per-script purpose, inputs, outputs, side effects, triggers, owners, on-failure runbooks. Links into the n8n workflow reader.
Depends on: p3.qop.app-shell,p1.automations.v1
p3.qop.brand-editor Brand EditorEdits brand.json instances. 30 sections (identity, heritage, audience, offerings, methodologies, messaging, visual, motion, audio, assets, components, presence, relationships, operations, credentials, suppliers, guarantees, proof, policies, legal, financial, tech, measurement, competitive, calendar, inheritance). Visual design tokens, color pickers, logo upload, etc.
Depends on: p3.qop.app-shell,p1.brand.v2-x
p3.qop.content-editor Content EditorEdits content.json. Article DNA, section templates, per-audience variants, forbidden-vocab enforcement, JSON-LD defaults. Integrates with the writer workflow so agents read content.json before drafting.
Depends on: p3.qop.app-shell,p1.content.v1
p3.qop.development-map-editor Development Map EditorEdits QOS.development-map.json via UI. Add nodes, transition status, annotate dependencies, set parallel-safe relationships, preview ASCII + HTML render in the same session. Uses the same toggle script as CLI but via form UI.
Depends on: p3.qop.app-shell,p1.qos.development-map
p3.qop.interconnect-editor Interconnect EditorEdits interconnect.json. Link graph, reader journeys, canonical-article cross-references, auto-link enforcement rules.
Depends on: p3.qop.app-shell,p1.interconnect.v1
p3.qop.metrics-editor Metrics EditorEdits metrics.v1 instance. KPIs, dashboard declarations, alert thresholds, per-VOSPA-layer health signals. Integrates with the A/B harness metric-capture surface in p4.
Depends on: p3.qop.app-shell,p1.metrics.v1
p3.qop.passport-editor Passport EditorEdits passport.v1 instance. Cross-app auth scopes, trust levels, redirect URLs, session lifetime, trusted-app registry.
Depends on: p3.qop.app-shell,p1.passport.v1
p3.qop.people-editor People EditorEdits people.json. Org structure, roles, credentials, leadership, team boundaries. Enforces youth-protection standard (no PII pre-employment surfaces).
Depends on: p3.qop.app-shell,p1.people.v1
p3.qop.site-editor Site Editor (Composition)Edits site.json instances. Page composition from the 22 primitives, per-variant configuration, asset reference management, preview pane. Supporter-facing chat interface eventually (supporters edit sites conversationally via QWB).
Depends on: p3.qop.app-shell,p1.site.v1
p3.qop.tools-editor Tools EditorEdits tools.json. Tool inventory plus TWL pointers, per-tool wisdom tags, vendor intelligence.
Depends on: p3.qop.app-shell,p1.tools.v1
p3.qop.universe-editor Universe EditorEdits universe.json instance. App family tree, visibility rules, cross-app relationships, ecosystem widget driver config.
Depends on: p3.qop.app-shell,p1.universe.v1
p3.qop.voice-editor Voice EditorEdits voice.json instances. Personality, tone, vocabulary, signatures, emoji palette, principles, samples, red flags. Per-audience variants. Voice-test feature (paste text, see flags).
Depends on: p3.qop.app-shell,p1.voice.v1
p3.qop.wisdom-editor Wisdom EditorEdits wisdom.json instances. Cross-cuts values.json sources[], brand.heritage, content.json, and the existing wisdom.db. Add + edit + cross-link wisdom entries; tag by tool, domain, and compass line.
Depends on: p3.qop.app-shell,p1.wisdom.v1
A/B harness for variant routing + metric capture + statistical significance gates + winner promotion. Converts 'brand guidance' into 'brand science'... testable hypotheses with measurable outcomes.
p4.testing.ab-harness A/B Test HarnessVariant routing + metric capture + statistical significance gates. Traffic splits per variant JSON, cookie-based sticky assignment, engagement metric logging (conversion, time-on-page, scroll depth), sig-testing before winner declaration.
Depends on: p1.values.v1,p1.brand.v2-x,p1.metrics.v1
p4.testing.winner-promotion Winner Promotion (Auto-Merge + Review)When a variant wins, auto-generate a PR (or QOP draft change) that merges it back to the canonical schema instance. Human-in-the-loop approval before the merge commits. Audit trail of who promoted which variant when and why.
Depends on: p4.testing.ab-harness
Public publication of QOS as a genuine standard. Schema gallery, documentation site, governance model, license finalization, reference apps. This is what makes QOS a Schema.org-grade artifact, not an internal tool.
p5.open-standard.landing quietlyos.org Landing PageSvelteKit + Svelte 5 runes landing at quietlyos.org. Scroll-driven narrative... Hero, Problem, Vision, VOSPA Origin, Three Planes, Working Manual, Reference Implementation, Ecosystem, Signup, Footer. Deployed on Cloudflare Pages. Canonical quietlyos.org; .com and www.* hosts 301 to canonical via hooks.server.ts.
p5.open-standard.working-manual Working Manual Build LogLive build log on quietlyos.org. Session-by-session entries authored in WORKING_MANUAL.md, parsed at build time into structured ManualEntry objects, rendered as a scroll-driven timeline. New entries get appended during /session-wrap-up in the QWU backoffice.
p5.open-standard.docs-site QOS Documentation SiteStarlight-based documentation site (or equivalent) covering getting-started, schema reference, governance, case studies, RFC template. Likely subdomain docs.quietlyos.org.
Depends on: p5.open-standard.license,p5.open-standard.schema-gallery
p5.open-standard.governance-model QOS Governance ModelFormal RFC process, contribution guidelines, steward selection, versioning policy, deprecation policy, dispute resolution. Document + repo structure + governance body.
Depends on: p5.open-standard.license
p5.open-standard.license QOS License FinalizationFinalize open-source license for every QOS schema (currently '[pending governance]'). Candidates: CC-BY-SA, Apache-2.0, BSL, custom QWF steward license. Update meta.license across all schema files and instances.
p5.open-standard.schema-gallery Schema GalleryPublic gallery page rendering every QOS schema with description, examples, $defs breakdown, downstream consumers, and code snippets. Like Schema.org's type reference but scoped to organizational identity.
Depends on: p5.open-standard.license
The map is authored at 005 Operations/Standards/roadmap/QOS.development-map.json in the QWU backoffice. Every /session-wrap-up asks what nodes shipped, started, or retrofitted this session and calls the toggle
script. Map version v1.1.0.
Public render with supporter-anonymity sweep applied at build time.
Quietly Working Foundation itself is the first full implementation. Every values.json, brand.json, site.json,
and forthcoming voice.json we operate against will be browsable, forkable, learnable from.
We eat our own dog food. Publicly.
The Quietly Working Foundation ecosystem... a constellation of apps each serving one domain well. QOS is the standard underneath them all.
Quietly Spotting is your command center. Every other program reports into it. Supporters discover the constellation through any one door... and find out it's a universe.
QOS is the foundation these run on.
QOS ships in phases. Each one unlocks a real capability. Drop your email and we'll tell you when something lands that matters.
Private by default. We route these to TIG personally. No team cc. No marketing automation. You get updates when there's real news.