Establish and enforce ownership rules for Effection scope and middleware #491

Description

@taras

Story

As a component or provider author, I want clear, enforced rules for Effection
scope and middleware, so I can tell who owns a resource, who may influence an
operation, who may authorize it, and what becomes durable history.

Example

A component installs middleware around a GitHub operation.

The middleware may observe the request, narrow it, refuse it, or delegate it. Its
lexical position does not let it manufacture an approved GitHub mutation or a
durable completion record.

The component's Effection scope owns the lifetime of live resources used while
the operation runs. The selected GitHub provider owns execution and its
authoritative outcome. The journal records the durable fact accepted for replay.

Those responsibilities compose, but they are not interchangeable.

Ownership model

Use five separate questions:

QuestionOwner
Who authored this work?Source site, including caller-projected content
Who owns its live lifetime and cleanup?Effection scope
Who may observe, narrow, redirect, refuse, or delegate it?Public middleware
Who may execute it and determine its canonical outcome?Canonical engine or selected provider terminal
What survives as accepted history?Journal or effect transaction

The mnemonic is:

Source owns authorship; scope owns lifetime; middleware owns policy;
canonical execution owns authority; the journal owns history.

Consequences

  • Lexical enclosure does not grant execution authority or durable ownership.
  • Component nesting and Effection scope often align, but they answer different
    questions.
  • Caller-authored projected content remains caller-authored while a callee's
    scope supplies context and lifetime.
  • Stable contextual names let separately loaded package copies compose. They do
    not prove trust, identity, authority, or completion.
  • Public middleware may route or refuse an authoritative operation. Its return
    value is not completion evidence.
  • Reconstructed scope and middleware during replay are current ephemeral policy,
    not proof that a past effect occurred.

Ordinary return-valued middleware remains appropriate when the returned value is
the replaceable policy result and cannot establish authoritative execution or
durable truth.

Authoritative operations

When a public contextual value could otherwise manufacture execution,
persistent identity, or durable completion, use an execution-owned boundary
such as:

  • a frozen invocation-specific request;
  • a one-use request where repetition would be unsafe;
  • a private provider terminal; or
  • equivalent execution-owned state.

Public middleware may observe, refuse, and delegate the request. It cannot invoke
the private terminal or publish the canonical result. A fabricated request,
captured wrapper, or second loaded package copy authorizes nothing.

Do not apply this machinery to pure configuration, display, or another
intentionally replaceable result merely because it also uses middleware.

Repository audit

Audit production and test-support uses of:

  • scoped, resource, useScope, and Scope.run;
  • tasks spawned through captured scopes;
  • Context and Api installation;
  • middleware delegation; and
  • provider or engine terminals.

For every distinct pattern, record:

  1. the source site that authored the work;
  2. the scope that owns resources and teardown;
  3. the behavior public middleware may change;
  4. the path that may author the canonical outcome; and
  5. the record, if any, that becomes durable truth.

Classify correct patterns as examples. Identify violations including:

  • redundant or incorrectly placed scopes;
  • resources escaping into a broader captured scope without an ownership
    contract;
  • replaceable contextual state used as identity, trust, authority, or completion
    evidence;
  • public middleware manufacturing an authoritative result; and
  • replay treating reconstructed policy as retained evidence.

Fix a violation here when the correction preserves settled behavior. If a fix
would change observable behavior, persistence, or a public API, create a focused
follow-up issue and link it. No known violation remains implicit.

Rules and guidance

For every rule:

  • state the author decision and the failure it prevents;
  • provide the smallest valid example;
  • include a counterexample when syntax alone hides the ownership mistake;
  • distinguish lifetime, policy, authority, and durability;
  • put actionable coding rules in AGENTS.md;
  • keep the complete model and rationale in architecture.md; and
  • keep specifications focused on observable behavior.

Add a shared review checklist to the Architect, Planner, and Implementor guides.
It identifies the protected consequence, execution owner, settlement owner,
permitted middleware behavior, invocation identity, failure ordering, and any
contextual state that might be trusted incorrectly.

Register any new architecture term before using it as normative vocabulary.

Enforcement

Classify every established rule as:

  1. Static: an AST pattern can reject the violation reliably.
  2. Tested: behavior or conformance evidence can distinguish it.
  3. Review-only: the decision depends on semantic context a linter cannot
    prove.

Add enabled local Oxlint rules for every reliable static class. Each rule has
focused valid and invalid fixtures covering relevant aliases, namespace imports,
shadowing, and nearby valid code.

Do not add name-only heuristics that diagnose code without proving the forbidden
shape.

A suppression applies only to the exact site and includes a comment naming the
ownership or lifetime invariant that makes it valid. File-wide and
directory-wide exemptions are not enforcement.

Rules that cannot be linted receive focused tests where observable and explicit
review guidance otherwise.

Acceptance

  • The audit accounts for every distinct production pattern and intentional
    test-support variation.
  • A reader can answer the five ownership questions independently for each
    pattern.
  • The rules state explicitly that lexical enclosure does not grant authority.
  • Projected-content authorship and dynamic scope are distinguished.
  • Stable-name composition is not treated as security or durable identity.
  • The private-terminal/request pattern is documented once with its required
    properties and limits.
  • Pure configuration and display middleware remain appropriately simple.
  • Replay accepts durable truth only through retained records and their admission
    checks.
  • Every rule has a static, tested, or review-only enforcement classification.
  • Every reliable static class has an enabled Oxlint rule and regression fixtures.
  • Architect, Planner, and Implementor guidance share the same ownership
    checklist.
  • Existing violations are corrected or linked to decision-ready follow-up
    issues.
  • Architecture references one coherent model instead of repeating apparently
    conflicting explanations.

Existing evidence

Use existing regressions where they already distinguish the model:

Add lint fixtures and focused ownership regressions only for claims the existing
evidence does not prove.

Out of scope

  • Creating a generic authority primitive merely because several tests look
    similar.
  • Refactoring correct boundaries without an identified ownership failure.
  • Adding behavior permutations that prove no distinct rule.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions

      , 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
       blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
      }
      } catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
      })();
      (function(){
      try {
      var __m = "github.com";
      var __re = new RegExp('^' + "github\\.com" + '
      
      Skip to content

      Establish and enforce ownership rules for Effection scope and middleware #491

      Description

      @taras

      Story

      As a component or provider author, I want clear, enforced rules for Effection
      scope and middleware, so I can tell who owns a resource, who may influence an
      operation, who may authorize it, and what becomes durable history.

      Example

      A component installs middleware around a GitHub operation.

      The middleware may observe the request, narrow it, refuse it, or delegate it. Its
      lexical position does not let it manufacture an approved GitHub mutation or a
      durable completion record.

      The component's Effection scope owns the lifetime of live resources used while
      the operation runs. The selected GitHub provider owns execution and its
      authoritative outcome. The journal records the durable fact accepted for replay.

      Those responsibilities compose, but they are not interchangeable.

      Ownership model

      Use five separate questions:

      QuestionOwner
      Who authored this work?Source site, including caller-projected content
      Who owns its live lifetime and cleanup?Effection scope
      Who may observe, narrow, redirect, refuse, or delegate it?Public middleware
      Who may execute it and determine its canonical outcome?Canonical engine or selected provider terminal
      What survives as accepted history?Journal or effect transaction

      The mnemonic is:

      Source owns authorship; scope owns lifetime; middleware owns policy;
      canonical execution owns authority; the journal owns history.

      Consequences

      • Lexical enclosure does not grant execution authority or durable ownership.
      • Component nesting and Effection scope often align, but they answer different
        questions.
      • Caller-authored projected content remains caller-authored while a callee's
        scope supplies context and lifetime.
      • Stable contextual names let separately loaded package copies compose. They do
        not prove trust, identity, authority, or completion.
      • Public middleware may route or refuse an authoritative operation. Its return
        value is not completion evidence.
      • Reconstructed scope and middleware during replay are current ephemeral policy,
        not proof that a past effect occurred.

      Ordinary return-valued middleware remains appropriate when the returned value is
      the replaceable policy result and cannot establish authoritative execution or
      durable truth.

      Authoritative operations

      When a public contextual value could otherwise manufacture execution,
      persistent identity, or durable completion, use an execution-owned boundary
      such as:

      • a frozen invocation-specific request;
      • a one-use request where repetition would be unsafe;
      • a private provider terminal; or
      • equivalent execution-owned state.

      Public middleware may observe, refuse, and delegate the request. It cannot invoke
      the private terminal or publish the canonical result. A fabricated request,
      captured wrapper, or second loaded package copy authorizes nothing.

      Do not apply this machinery to pure configuration, display, or another
      intentionally replaceable result merely because it also uses middleware.

      Repository audit

      Audit production and test-support uses of:

      • scoped, resource, useScope, and Scope.run;
      • tasks spawned through captured scopes;
      • Context and Api installation;
      • middleware delegation; and
      • provider or engine terminals.

      For every distinct pattern, record:

      1. the source site that authored the work;
      2. the scope that owns resources and teardown;
      3. the behavior public middleware may change;
      4. the path that may author the canonical outcome; and
      5. the record, if any, that becomes durable truth.

      Classify correct patterns as examples. Identify violations including:

      • redundant or incorrectly placed scopes;
      • resources escaping into a broader captured scope without an ownership
        contract;
      • replaceable contextual state used as identity, trust, authority, or completion
        evidence;
      • public middleware manufacturing an authoritative result; and
      • replay treating reconstructed policy as retained evidence.

      Fix a violation here when the correction preserves settled behavior. If a fix
      would change observable behavior, persistence, or a public API, create a focused
      follow-up issue and link it. No known violation remains implicit.

      Rules and guidance

      For every rule:

      • state the author decision and the failure it prevents;
      • provide the smallest valid example;
      • include a counterexample when syntax alone hides the ownership mistake;
      • distinguish lifetime, policy, authority, and durability;
      • put actionable coding rules in AGENTS.md;
      • keep the complete model and rationale in architecture.md; and
      • keep specifications focused on observable behavior.

      Add a shared review checklist to the Architect, Planner, and Implementor guides.
      It identifies the protected consequence, execution owner, settlement owner,
      permitted middleware behavior, invocation identity, failure ordering, and any
      contextual state that might be trusted incorrectly.

      Register any new architecture term before using it as normative vocabulary.

      Enforcement

      Classify every established rule as:

      1. Static: an AST pattern can reject the violation reliably.
      2. Tested: behavior or conformance evidence can distinguish it.
      3. Review-only: the decision depends on semantic context a linter cannot
        prove.

      Add enabled local Oxlint rules for every reliable static class. Each rule has
      focused valid and invalid fixtures covering relevant aliases, namespace imports,
      shadowing, and nearby valid code.

      Do not add name-only heuristics that diagnose code without proving the forbidden
      shape.

      A suppression applies only to the exact site and includes a comment naming the
      ownership or lifetime invariant that makes it valid. File-wide and
      directory-wide exemptions are not enforcement.

      Rules that cannot be linted receive focused tests where observable and explicit
      review guidance otherwise.

      Acceptance

      • The audit accounts for every distinct production pattern and intentional
        test-support variation.
      • A reader can answer the five ownership questions independently for each
        pattern.
      • The rules state explicitly that lexical enclosure does not grant authority.
      • Projected-content authorship and dynamic scope are distinguished.
      • Stable-name composition is not treated as security or durable identity.
      • The private-terminal/request pattern is documented once with its required
        properties and limits.
      • Pure configuration and display middleware remain appropriately simple.
      • Replay accepts durable truth only through retained records and their admission
        checks.
      • Every rule has a static, tested, or review-only enforcement classification.
      • Every reliable static class has an enabled Oxlint rule and regression fixtures.
      • Architect, Planner, and Implementor guidance share the same ownership
        checklist.
      • Existing violations are corrected or linked to decision-ready follow-up
        issues.
      • Architecture references one coherent model instead of repeating apparently
        conflicting explanations.

      Existing evidence

      Use existing regressions where they already distinguish the model:

      Add lint fixtures and focused ownership regressions only for claims the existing
      evidence does not prove.

      Out of scope

      • Creating a generic authority primitive merely because several tests look
        similar.
      • Refactoring correct boundaries without an identified ownership failure.
      • Adding behavior permutations that prove no distinct rule.

      Activity

      Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

      Metadata

      Metadata

      Assignees

      No one assigned

        Labels

        No labels
        No labels

        Projects

        No projects

          Milestone

          No milestone

          Relationships

          None yet

          Development

          No branches or pull requests

          Issue actions

          , 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
          Skip to content

          Establish and enforce ownership rules for Effection scope and middleware #491

          Description

          @taras

          Story

          As a component or provider author, I want clear, enforced rules for Effection
          scope and middleware, so I can tell who owns a resource, who may influence an
          operation, who may authorize it, and what becomes durable history.

          Example

          A component installs middleware around a GitHub operation.

          The middleware may observe the request, narrow it, refuse it, or delegate it. Its
          lexical position does not let it manufacture an approved GitHub mutation or a
          durable completion record.

          The component's Effection scope owns the lifetime of live resources used while
          the operation runs. The selected GitHub provider owns execution and its
          authoritative outcome. The journal records the durable fact accepted for replay.

          Those responsibilities compose, but they are not interchangeable.

          Ownership model

          Use five separate questions:

          QuestionOwner
          Who authored this work?Source site, including caller-projected content
          Who owns its live lifetime and cleanup?Effection scope
          Who may observe, narrow, redirect, refuse, or delegate it?Public middleware
          Who may execute it and determine its canonical outcome?Canonical engine or selected provider terminal
          What survives as accepted history?Journal or effect transaction

          The mnemonic is:

          Source owns authorship; scope owns lifetime; middleware owns policy;
          canonical execution owns authority; the journal owns history.

          Consequences

          • Lexical enclosure does not grant execution authority or durable ownership.
          • Component nesting and Effection scope often align, but they answer different
            questions.
          • Caller-authored projected content remains caller-authored while a callee's
            scope supplies context and lifetime.
          • Stable contextual names let separately loaded package copies compose. They do
            not prove trust, identity, authority, or completion.
          • Public middleware may route or refuse an authoritative operation. Its return
            value is not completion evidence.
          • Reconstructed scope and middleware during replay are current ephemeral policy,
            not proof that a past effect occurred.

          Ordinary return-valued middleware remains appropriate when the returned value is
          the replaceable policy result and cannot establish authoritative execution or
          durable truth.

          Authoritative operations

          When a public contextual value could otherwise manufacture execution,
          persistent identity, or durable completion, use an execution-owned boundary
          such as:

          • a frozen invocation-specific request;
          • a one-use request where repetition would be unsafe;
          • a private provider terminal; or
          • equivalent execution-owned state.

          Public middleware may observe, refuse, and delegate the request. It cannot invoke
          the private terminal or publish the canonical result. A fabricated request,
          captured wrapper, or second loaded package copy authorizes nothing.

          Do not apply this machinery to pure configuration, display, or another
          intentionally replaceable result merely because it also uses middleware.

          Repository audit

          Audit production and test-support uses of:

          • scoped, resource, useScope, and Scope.run;
          • tasks spawned through captured scopes;
          • Context and Api installation;
          • middleware delegation; and
          • provider or engine terminals.

          For every distinct pattern, record:

          1. the source site that authored the work;
          2. the scope that owns resources and teardown;
          3. the behavior public middleware may change;
          4. the path that may author the canonical outcome; and
          5. the record, if any, that becomes durable truth.

          Classify correct patterns as examples. Identify violations including:

          • redundant or incorrectly placed scopes;
          • resources escaping into a broader captured scope without an ownership
            contract;
          • replaceable contextual state used as identity, trust, authority, or completion
            evidence;
          • public middleware manufacturing an authoritative result; and
          • replay treating reconstructed policy as retained evidence.

          Fix a violation here when the correction preserves settled behavior. If a fix
          would change observable behavior, persistence, or a public API, create a focused
          follow-up issue and link it. No known violation remains implicit.

          Rules and guidance

          For every rule:

          • state the author decision and the failure it prevents;
          • provide the smallest valid example;
          • include a counterexample when syntax alone hides the ownership mistake;
          • distinguish lifetime, policy, authority, and durability;
          • put actionable coding rules in AGENTS.md;
          • keep the complete model and rationale in architecture.md; and
          • keep specifications focused on observable behavior.

          Add a shared review checklist to the Architect, Planner, and Implementor guides.
          It identifies the protected consequence, execution owner, settlement owner,
          permitted middleware behavior, invocation identity, failure ordering, and any
          contextual state that might be trusted incorrectly.

          Register any new architecture term before using it as normative vocabulary.

          Enforcement

          Classify every established rule as:

          1. Static: an AST pattern can reject the violation reliably.
          2. Tested: behavior or conformance evidence can distinguish it.
          3. Review-only: the decision depends on semantic context a linter cannot
            prove.

          Add enabled local Oxlint rules for every reliable static class. Each rule has
          focused valid and invalid fixtures covering relevant aliases, namespace imports,
          shadowing, and nearby valid code.

          Do not add name-only heuristics that diagnose code without proving the forbidden
          shape.

          A suppression applies only to the exact site and includes a comment naming the
          ownership or lifetime invariant that makes it valid. File-wide and
          directory-wide exemptions are not enforcement.

          Rules that cannot be linted receive focused tests where observable and explicit
          review guidance otherwise.

          Acceptance

          • The audit accounts for every distinct production pattern and intentional
            test-support variation.
          • A reader can answer the five ownership questions independently for each
            pattern.
          • The rules state explicitly that lexical enclosure does not grant authority.
          • Projected-content authorship and dynamic scope are distinguished.
          • Stable-name composition is not treated as security or durable identity.
          • The private-terminal/request pattern is documented once with its required
            properties and limits.
          • Pure configuration and display middleware remain appropriately simple.
          • Replay accepts durable truth only through retained records and their admission
            checks.
          • Every rule has a static, tested, or review-only enforcement classification.
          • Every reliable static class has an enabled Oxlint rule and regression fixtures.
          • Architect, Planner, and Implementor guidance share the same ownership
            checklist.
          • Existing violations are corrected or linked to decision-ready follow-up
            issues.
          • Architecture references one coherent model instead of repeating apparently
            conflicting explanations.

          Existing evidence

          Use existing regressions where they already distinguish the model:

          Add lint fixtures and focused ownership regressions only for claims the existing
          evidence does not prove.

          Out of scope

          • Creating a generic authority primitive merely because several tests look
            similar.
          • Refactoring correct boundaries without an identified ownership failure.
          • Adding behavior permutations that prove no distinct rule.

          Activity

          Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

          Metadata

          Metadata

          Assignees

          No one assigned

            Labels

            No labels
            No labels

            Projects

            No projects

              Milestone

              No milestone

              Relationships

              None yet

              Development

              No branches or pull requests

              Issue actions

              , 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
              Skip to content

              Establish and enforce ownership rules for Effection scope and middleware #491

              Description

              @taras

              Story

              As a component or provider author, I want clear, enforced rules for Effection
              scope and middleware, so I can tell who owns a resource, who may influence an
              operation, who may authorize it, and what becomes durable history.

              Example

              A component installs middleware around a GitHub operation.

              The middleware may observe the request, narrow it, refuse it, or delegate it. Its
              lexical position does not let it manufacture an approved GitHub mutation or a
              durable completion record.

              The component's Effection scope owns the lifetime of live resources used while
              the operation runs. The selected GitHub provider owns execution and its
              authoritative outcome. The journal records the durable fact accepted for replay.

              Those responsibilities compose, but they are not interchangeable.

              Ownership model

              Use five separate questions:

              QuestionOwner
              Who authored this work?Source site, including caller-projected content
              Who owns its live lifetime and cleanup?Effection scope
              Who may observe, narrow, redirect, refuse, or delegate it?Public middleware
              Who may execute it and determine its canonical outcome?Canonical engine or selected provider terminal
              What survives as accepted history?Journal or effect transaction

              The mnemonic is:

              Source owns authorship; scope owns lifetime; middleware owns policy;
              canonical execution owns authority; the journal owns history.

              Consequences

              • Lexical enclosure does not grant execution authority or durable ownership.
              • Component nesting and Effection scope often align, but they answer different
                questions.
              • Caller-authored projected content remains caller-authored while a callee's
                scope supplies context and lifetime.
              • Stable contextual names let separately loaded package copies compose. They do
                not prove trust, identity, authority, or completion.
              • Public middleware may route or refuse an authoritative operation. Its return
                value is not completion evidence.
              • Reconstructed scope and middleware during replay are current ephemeral policy,
                not proof that a past effect occurred.

              Ordinary return-valued middleware remains appropriate when the returned value is
              the replaceable policy result and cannot establish authoritative execution or
              durable truth.

              Authoritative operations

              When a public contextual value could otherwise manufacture execution,
              persistent identity, or durable completion, use an execution-owned boundary
              such as:

              • a frozen invocation-specific request;
              • a one-use request where repetition would be unsafe;
              • a private provider terminal; or
              • equivalent execution-owned state.

              Public middleware may observe, refuse, and delegate the request. It cannot invoke
              the private terminal or publish the canonical result. A fabricated request,
              captured wrapper, or second loaded package copy authorizes nothing.

              Do not apply this machinery to pure configuration, display, or another
              intentionally replaceable result merely because it also uses middleware.

              Repository audit

              Audit production and test-support uses of:

              • scoped, resource, useScope, and Scope.run;
              • tasks spawned through captured scopes;
              • Context and Api installation;
              • middleware delegation; and
              • provider or engine terminals.

              For every distinct pattern, record:

              1. the source site that authored the work;
              2. the scope that owns resources and teardown;
              3. the behavior public middleware may change;
              4. the path that may author the canonical outcome; and
              5. the record, if any, that becomes durable truth.

              Classify correct patterns as examples. Identify violations including:

              • redundant or incorrectly placed scopes;
              • resources escaping into a broader captured scope without an ownership
                contract;
              • replaceable contextual state used as identity, trust, authority, or completion
                evidence;
              • public middleware manufacturing an authoritative result; and
              • replay treating reconstructed policy as retained evidence.

              Fix a violation here when the correction preserves settled behavior. If a fix
              would change observable behavior, persistence, or a public API, create a focused
              follow-up issue and link it. No known violation remains implicit.

              Rules and guidance

              For every rule:

              • state the author decision and the failure it prevents;
              • provide the smallest valid example;
              • include a counterexample when syntax alone hides the ownership mistake;
              • distinguish lifetime, policy, authority, and durability;
              • put actionable coding rules in AGENTS.md;
              • keep the complete model and rationale in architecture.md; and
              • keep specifications focused on observable behavior.

              Add a shared review checklist to the Architect, Planner, and Implementor guides.
              It identifies the protected consequence, execution owner, settlement owner,
              permitted middleware behavior, invocation identity, failure ordering, and any
              contextual state that might be trusted incorrectly.

              Register any new architecture term before using it as normative vocabulary.

              Enforcement

              Classify every established rule as:

              1. Static: an AST pattern can reject the violation reliably.
              2. Tested: behavior or conformance evidence can distinguish it.
              3. Review-only: the decision depends on semantic context a linter cannot
                prove.

              Add enabled local Oxlint rules for every reliable static class. Each rule has
              focused valid and invalid fixtures covering relevant aliases, namespace imports,
              shadowing, and nearby valid code.

              Do not add name-only heuristics that diagnose code without proving the forbidden
              shape.

              A suppression applies only to the exact site and includes a comment naming the
              ownership or lifetime invariant that makes it valid. File-wide and
              directory-wide exemptions are not enforcement.

              Rules that cannot be linted receive focused tests where observable and explicit
              review guidance otherwise.

              Acceptance

              • The audit accounts for every distinct production pattern and intentional
                test-support variation.
              • A reader can answer the five ownership questions independently for each
                pattern.
              • The rules state explicitly that lexical enclosure does not grant authority.
              • Projected-content authorship and dynamic scope are distinguished.
              • Stable-name composition is not treated as security or durable identity.
              • The private-terminal/request pattern is documented once with its required
                properties and limits.
              • Pure configuration and display middleware remain appropriately simple.
              • Replay accepts durable truth only through retained records and their admission
                checks.
              • Every rule has a static, tested, or review-only enforcement classification.
              • Every reliable static class has an enabled Oxlint rule and regression fixtures.
              • Architect, Planner, and Implementor guidance share the same ownership
                checklist.
              • Existing violations are corrected or linked to decision-ready follow-up
                issues.
              • Architecture references one coherent model instead of repeating apparently
                conflicting explanations.

              Existing evidence

              Use existing regressions where they already distinguish the model:

              Add lint fixtures and focused ownership regressions only for claims the existing
              evidence does not prove.

              Out of scope

              • Creating a generic authority primitive merely because several tests look
                similar.
              • Refactoring correct boundaries without an identified ownership failure.
              • Adding behavior permutations that prove no distinct rule.

              Activity

              Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

              Metadata

              Metadata

              Assignees

              No one assigned

                Labels

                No labels
                No labels

                Projects

                No projects

                  Milestone

                  No milestone

                  Relationships

                  None yet

                  Development

                  No branches or pull requests

                  Issue actions

                  , 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
                  Skip to content

                  Establish and enforce ownership rules for Effection scope and middleware #491

                  Description

                  @taras

                  Story

                  As a component or provider author, I want clear, enforced rules for Effection
                  scope and middleware, so I can tell who owns a resource, who may influence an
                  operation, who may authorize it, and what becomes durable history.

                  Example

                  A component installs middleware around a GitHub operation.

                  The middleware may observe the request, narrow it, refuse it, or delegate it. Its
                  lexical position does not let it manufacture an approved GitHub mutation or a
                  durable completion record.

                  The component's Effection scope owns the lifetime of live resources used while
                  the operation runs. The selected GitHub provider owns execution and its
                  authoritative outcome. The journal records the durable fact accepted for replay.

                  Those responsibilities compose, but they are not interchangeable.

                  Ownership model

                  Use five separate questions:

                  QuestionOwner
                  Who authored this work?Source site, including caller-projected content
                  Who owns its live lifetime and cleanup?Effection scope
                  Who may observe, narrow, redirect, refuse, or delegate it?Public middleware
                  Who may execute it and determine its canonical outcome?Canonical engine or selected provider terminal
                  What survives as accepted history?Journal or effect transaction

                  The mnemonic is:

                  Source owns authorship; scope owns lifetime; middleware owns policy;
                  canonical execution owns authority; the journal owns history.

                  Consequences

                  • Lexical enclosure does not grant execution authority or durable ownership.
                  • Component nesting and Effection scope often align, but they answer different
                    questions.
                  • Caller-authored projected content remains caller-authored while a callee's
                    scope supplies context and lifetime.
                  • Stable contextual names let separately loaded package copies compose. They do
                    not prove trust, identity, authority, or completion.
                  • Public middleware may route or refuse an authoritative operation. Its return
                    value is not completion evidence.
                  • Reconstructed scope and middleware during replay are current ephemeral policy,
                    not proof that a past effect occurred.

                  Ordinary return-valued middleware remains appropriate when the returned value is
                  the replaceable policy result and cannot establish authoritative execution or
                  durable truth.

                  Authoritative operations

                  When a public contextual value could otherwise manufacture execution,
                  persistent identity, or durable completion, use an execution-owned boundary
                  such as:

                  • a frozen invocation-specific request;
                  • a one-use request where repetition would be unsafe;
                  • a private provider terminal; or
                  • equivalent execution-owned state.

                  Public middleware may observe, refuse, and delegate the request. It cannot invoke
                  the private terminal or publish the canonical result. A fabricated request,
                  captured wrapper, or second loaded package copy authorizes nothing.

                  Do not apply this machinery to pure configuration, display, or another
                  intentionally replaceable result merely because it also uses middleware.

                  Repository audit

                  Audit production and test-support uses of:

                  • scoped, resource, useScope, and Scope.run;
                  • tasks spawned through captured scopes;
                  • Context and Api installation;
                  • middleware delegation; and
                  • provider or engine terminals.

                  For every distinct pattern, record:

                  1. the source site that authored the work;
                  2. the scope that owns resources and teardown;
                  3. the behavior public middleware may change;
                  4. the path that may author the canonical outcome; and
                  5. the record, if any, that becomes durable truth.

                  Classify correct patterns as examples. Identify violations including:

                  • redundant or incorrectly placed scopes;
                  • resources escaping into a broader captured scope without an ownership
                    contract;
                  • replaceable contextual state used as identity, trust, authority, or completion
                    evidence;
                  • public middleware manufacturing an authoritative result; and
                  • replay treating reconstructed policy as retained evidence.

                  Fix a violation here when the correction preserves settled behavior. If a fix
                  would change observable behavior, persistence, or a public API, create a focused
                  follow-up issue and link it. No known violation remains implicit.

                  Rules and guidance

                  For every rule:

                  • state the author decision and the failure it prevents;
                  • provide the smallest valid example;
                  • include a counterexample when syntax alone hides the ownership mistake;
                  • distinguish lifetime, policy, authority, and durability;
                  • put actionable coding rules in AGENTS.md;
                  • keep the complete model and rationale in architecture.md; and
                  • keep specifications focused on observable behavior.

                  Add a shared review checklist to the Architect, Planner, and Implementor guides.
                  It identifies the protected consequence, execution owner, settlement owner,
                  permitted middleware behavior, invocation identity, failure ordering, and any
                  contextual state that might be trusted incorrectly.

                  Register any new architecture term before using it as normative vocabulary.

                  Enforcement

                  Classify every established rule as:

                  1. Static: an AST pattern can reject the violation reliably.
                  2. Tested: behavior or conformance evidence can distinguish it.
                  3. Review-only: the decision depends on semantic context a linter cannot
                    prove.

                  Add enabled local Oxlint rules for every reliable static class. Each rule has
                  focused valid and invalid fixtures covering relevant aliases, namespace imports,
                  shadowing, and nearby valid code.

                  Do not add name-only heuristics that diagnose code without proving the forbidden
                  shape.

                  A suppression applies only to the exact site and includes a comment naming the
                  ownership or lifetime invariant that makes it valid. File-wide and
                  directory-wide exemptions are not enforcement.

                  Rules that cannot be linted receive focused tests where observable and explicit
                  review guidance otherwise.

                  Acceptance

                  • The audit accounts for every distinct production pattern and intentional
                    test-support variation.
                  • A reader can answer the five ownership questions independently for each
                    pattern.
                  • The rules state explicitly that lexical enclosure does not grant authority.
                  • Projected-content authorship and dynamic scope are distinguished.
                  • Stable-name composition is not treated as security or durable identity.
                  • The private-terminal/request pattern is documented once with its required
                    properties and limits.
                  • Pure configuration and display middleware remain appropriately simple.
                  • Replay accepts durable truth only through retained records and their admission
                    checks.
                  • Every rule has a static, tested, or review-only enforcement classification.
                  • Every reliable static class has an enabled Oxlint rule and regression fixtures.
                  • Architect, Planner, and Implementor guidance share the same ownership
                    checklist.
                  • Existing violations are corrected or linked to decision-ready follow-up
                    issues.
                  • Architecture references one coherent model instead of repeating apparently
                    conflicting explanations.

                  Existing evidence

                  Use existing regressions where they already distinguish the model:

                  Add lint fixtures and focused ownership regressions only for claims the existing
                  evidence does not prove.

                  Out of scope

                  • Creating a generic authority primitive merely because several tests look
                    similar.
                  • Refactoring correct boundaries without an identified ownership failure.
                  • Adding behavior permutations that prove no distinct rule.

                  Activity

                  Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

                  Metadata

                  Metadata

                  Assignees

                  No one assigned

                    Labels

                    No labels
                    No labels

                    Projects

                    No projects

                      Milestone

                      No milestone

                      Relationships

                      None yet

                      Development

                      No branches or pull requests

                      Issue actions

                      , 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
                      Skip to content

                      Establish and enforce ownership rules for Effection scope and middleware #491

                      Description

                      @taras

                      Story

                      As a component or provider author, I want clear, enforced rules for Effection
                      scope and middleware, so I can tell who owns a resource, who may influence an
                      operation, who may authorize it, and what becomes durable history.

                      Example

                      A component installs middleware around a GitHub operation.

                      The middleware may observe the request, narrow it, refuse it, or delegate it. Its
                      lexical position does not let it manufacture an approved GitHub mutation or a
                      durable completion record.

                      The component's Effection scope owns the lifetime of live resources used while
                      the operation runs. The selected GitHub provider owns execution and its
                      authoritative outcome. The journal records the durable fact accepted for replay.

                      Those responsibilities compose, but they are not interchangeable.

                      Ownership model

                      Use five separate questions:

                      QuestionOwner
                      Who authored this work?Source site, including caller-projected content
                      Who owns its live lifetime and cleanup?Effection scope
                      Who may observe, narrow, redirect, refuse, or delegate it?Public middleware
                      Who may execute it and determine its canonical outcome?Canonical engine or selected provider terminal
                      What survives as accepted history?Journal or effect transaction

                      The mnemonic is:

                      Source owns authorship; scope owns lifetime; middleware owns policy;
                      canonical execution owns authority; the journal owns history.

                      Consequences

                      • Lexical enclosure does not grant execution authority or durable ownership.
                      • Component nesting and Effection scope often align, but they answer different
                        questions.
                      • Caller-authored projected content remains caller-authored while a callee's
                        scope supplies context and lifetime.
                      • Stable contextual names let separately loaded package copies compose. They do
                        not prove trust, identity, authority, or completion.
                      • Public middleware may route or refuse an authoritative operation. Its return
                        value is not completion evidence.
                      • Reconstructed scope and middleware during replay are current ephemeral policy,
                        not proof that a past effect occurred.

                      Ordinary return-valued middleware remains appropriate when the returned value is
                      the replaceable policy result and cannot establish authoritative execution or
                      durable truth.

                      Authoritative operations

                      When a public contextual value could otherwise manufacture execution,
                      persistent identity, or durable completion, use an execution-owned boundary
                      such as:

                      • a frozen invocation-specific request;
                      • a one-use request where repetition would be unsafe;
                      • a private provider terminal; or
                      • equivalent execution-owned state.

                      Public middleware may observe, refuse, and delegate the request. It cannot invoke
                      the private terminal or publish the canonical result. A fabricated request,
                      captured wrapper, or second loaded package copy authorizes nothing.

                      Do not apply this machinery to pure configuration, display, or another
                      intentionally replaceable result merely because it also uses middleware.

                      Repository audit

                      Audit production and test-support uses of:

                      • scoped, resource, useScope, and Scope.run;
                      • tasks spawned through captured scopes;
                      • Context and Api installation;
                      • middleware delegation; and
                      • provider or engine terminals.

                      For every distinct pattern, record:

                      1. the source site that authored the work;
                      2. the scope that owns resources and teardown;
                      3. the behavior public middleware may change;
                      4. the path that may author the canonical outcome; and
                      5. the record, if any, that becomes durable truth.

                      Classify correct patterns as examples. Identify violations including:

                      • redundant or incorrectly placed scopes;
                      • resources escaping into a broader captured scope without an ownership
                        contract;
                      • replaceable contextual state used as identity, trust, authority, or completion
                        evidence;
                      • public middleware manufacturing an authoritative result; and
                      • replay treating reconstructed policy as retained evidence.

                      Fix a violation here when the correction preserves settled behavior. If a fix
                      would change observable behavior, persistence, or a public API, create a focused
                      follow-up issue and link it. No known violation remains implicit.

                      Rules and guidance

                      For every rule:

                      • state the author decision and the failure it prevents;
                      • provide the smallest valid example;
                      • include a counterexample when syntax alone hides the ownership mistake;
                      • distinguish lifetime, policy, authority, and durability;
                      • put actionable coding rules in AGENTS.md;
                      • keep the complete model and rationale in architecture.md; and
                      • keep specifications focused on observable behavior.

                      Add a shared review checklist to the Architect, Planner, and Implementor guides.
                      It identifies the protected consequence, execution owner, settlement owner,
                      permitted middleware behavior, invocation identity, failure ordering, and any
                      contextual state that might be trusted incorrectly.

                      Register any new architecture term before using it as normative vocabulary.

                      Enforcement

                      Classify every established rule as:

                      1. Static: an AST pattern can reject the violation reliably.
                      2. Tested: behavior or conformance evidence can distinguish it.
                      3. Review-only: the decision depends on semantic context a linter cannot
                        prove.

                      Add enabled local Oxlint rules for every reliable static class. Each rule has
                      focused valid and invalid fixtures covering relevant aliases, namespace imports,
                      shadowing, and nearby valid code.

                      Do not add name-only heuristics that diagnose code without proving the forbidden
                      shape.

                      A suppression applies only to the exact site and includes a comment naming the
                      ownership or lifetime invariant that makes it valid. File-wide and
                      directory-wide exemptions are not enforcement.

                      Rules that cannot be linted receive focused tests where observable and explicit
                      review guidance otherwise.

                      Acceptance

                      • The audit accounts for every distinct production pattern and intentional
                        test-support variation.
                      • A reader can answer the five ownership questions independently for each
                        pattern.
                      • The rules state explicitly that lexical enclosure does not grant authority.
                      • Projected-content authorship and dynamic scope are distinguished.
                      • Stable-name composition is not treated as security or durable identity.
                      • The private-terminal/request pattern is documented once with its required
                        properties and limits.
                      • Pure configuration and display middleware remain appropriately simple.
                      • Replay accepts durable truth only through retained records and their admission
                        checks.
                      • Every rule has a static, tested, or review-only enforcement classification.
                      • Every reliable static class has an enabled Oxlint rule and regression fixtures.
                      • Architect, Planner, and Implementor guidance share the same ownership
                        checklist.
                      • Existing violations are corrected or linked to decision-ready follow-up
                        issues.
                      • Architecture references one coherent model instead of repeating apparently
                        conflicting explanations.

                      Existing evidence

                      Use existing regressions where they already distinguish the model:

                      Add lint fixtures and focused ownership regressions only for claims the existing
                      evidence does not prove.

                      Out of scope

                      • Creating a generic authority primitive merely because several tests look
                        similar.
                      • Refactoring correct boundaries without an identified ownership failure.
                      • Adding behavior permutations that prove no distinct rule.

                      Activity

                      Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

                      Metadata

                      Metadata

                      Assignees

                      No one assigned

                        Labels

                        No labels
                        No labels

                        Projects

                        No projects

                          Milestone

                          No milestone

                          Relationships

                          None yet

                          Development

                          No branches or pull requests

                          Issue actions

                          , 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
                          Skip to content

                          Establish and enforce ownership rules for Effection scope and middleware #491

                          Description

                          @taras

                          Story

                          As a component or provider author, I want clear, enforced rules for Effection
                          scope and middleware, so I can tell who owns a resource, who may influence an
                          operation, who may authorize it, and what becomes durable history.

                          Example

                          A component installs middleware around a GitHub operation.

                          The middleware may observe the request, narrow it, refuse it, or delegate it. Its
                          lexical position does not let it manufacture an approved GitHub mutation or a
                          durable completion record.

                          The component's Effection scope owns the lifetime of live resources used while
                          the operation runs. The selected GitHub provider owns execution and its
                          authoritative outcome. The journal records the durable fact accepted for replay.

                          Those responsibilities compose, but they are not interchangeable.

                          Ownership model

                          Use five separate questions:

                          QuestionOwner
                          Who authored this work?Source site, including caller-projected content
                          Who owns its live lifetime and cleanup?Effection scope
                          Who may observe, narrow, redirect, refuse, or delegate it?Public middleware
                          Who may execute it and determine its canonical outcome?Canonical engine or selected provider terminal
                          What survives as accepted history?Journal or effect transaction

                          The mnemonic is:

                          Source owns authorship; scope owns lifetime; middleware owns policy;
                          canonical execution owns authority; the journal owns history.

                          Consequences

                          • Lexical enclosure does not grant execution authority or durable ownership.
                          • Component nesting and Effection scope often align, but they answer different
                            questions.
                          • Caller-authored projected content remains caller-authored while a callee's
                            scope supplies context and lifetime.
                          • Stable contextual names let separately loaded package copies compose. They do
                            not prove trust, identity, authority, or completion.
                          • Public middleware may route or refuse an authoritative operation. Its return
                            value is not completion evidence.
                          • Reconstructed scope and middleware during replay are current ephemeral policy,
                            not proof that a past effect occurred.

                          Ordinary return-valued middleware remains appropriate when the returned value is
                          the replaceable policy result and cannot establish authoritative execution or
                          durable truth.

                          Authoritative operations

                          When a public contextual value could otherwise manufacture execution,
                          persistent identity, or durable completion, use an execution-owned boundary
                          such as:

                          • a frozen invocation-specific request;
                          • a one-use request where repetition would be unsafe;
                          • a private provider terminal; or
                          • equivalent execution-owned state.

                          Public middleware may observe, refuse, and delegate the request. It cannot invoke
                          the private terminal or publish the canonical result. A fabricated request,
                          captured wrapper, or second loaded package copy authorizes nothing.

                          Do not apply this machinery to pure configuration, display, or another
                          intentionally replaceable result merely because it also uses middleware.

                          Repository audit

                          Audit production and test-support uses of:

                          • scoped, resource, useScope, and Scope.run;
                          • tasks spawned through captured scopes;
                          • Context and Api installation;
                          • middleware delegation; and
                          • provider or engine terminals.

                          For every distinct pattern, record:

                          1. the source site that authored the work;
                          2. the scope that owns resources and teardown;
                          3. the behavior public middleware may change;
                          4. the path that may author the canonical outcome; and
                          5. the record, if any, that becomes durable truth.

                          Classify correct patterns as examples. Identify violations including:

                          • redundant or incorrectly placed scopes;
                          • resources escaping into a broader captured scope without an ownership
                            contract;
                          • replaceable contextual state used as identity, trust, authority, or completion
                            evidence;
                          • public middleware manufacturing an authoritative result; and
                          • replay treating reconstructed policy as retained evidence.

                          Fix a violation here when the correction preserves settled behavior. If a fix
                          would change observable behavior, persistence, or a public API, create a focused
                          follow-up issue and link it. No known violation remains implicit.

                          Rules and guidance

                          For every rule:

                          • state the author decision and the failure it prevents;
                          • provide the smallest valid example;
                          • include a counterexample when syntax alone hides the ownership mistake;
                          • distinguish lifetime, policy, authority, and durability;
                          • put actionable coding rules in AGENTS.md;
                          • keep the complete model and rationale in architecture.md; and
                          • keep specifications focused on observable behavior.

                          Add a shared review checklist to the Architect, Planner, and Implementor guides.
                          It identifies the protected consequence, execution owner, settlement owner,
                          permitted middleware behavior, invocation identity, failure ordering, and any
                          contextual state that might be trusted incorrectly.

                          Register any new architecture term before using it as normative vocabulary.

                          Enforcement

                          Classify every established rule as:

                          1. Static: an AST pattern can reject the violation reliably.
                          2. Tested: behavior or conformance evidence can distinguish it.
                          3. Review-only: the decision depends on semantic context a linter cannot
                            prove.

                          Add enabled local Oxlint rules for every reliable static class. Each rule has
                          focused valid and invalid fixtures covering relevant aliases, namespace imports,
                          shadowing, and nearby valid code.

                          Do not add name-only heuristics that diagnose code without proving the forbidden
                          shape.

                          A suppression applies only to the exact site and includes a comment naming the
                          ownership or lifetime invariant that makes it valid. File-wide and
                          directory-wide exemptions are not enforcement.

                          Rules that cannot be linted receive focused tests where observable and explicit
                          review guidance otherwise.

                          Acceptance

                          • The audit accounts for every distinct production pattern and intentional
                            test-support variation.
                          • A reader can answer the five ownership questions independently for each
                            pattern.
                          • The rules state explicitly that lexical enclosure does not grant authority.
                          • Projected-content authorship and dynamic scope are distinguished.
                          • Stable-name composition is not treated as security or durable identity.
                          • The private-terminal/request pattern is documented once with its required
                            properties and limits.
                          • Pure configuration and display middleware remain appropriately simple.
                          • Replay accepts durable truth only through retained records and their admission
                            checks.
                          • Every rule has a static, tested, or review-only enforcement classification.
                          • Every reliable static class has an enabled Oxlint rule and regression fixtures.
                          • Architect, Planner, and Implementor guidance share the same ownership
                            checklist.
                          • Existing violations are corrected or linked to decision-ready follow-up
                            issues.
                          • Architecture references one coherent model instead of repeating apparently
                            conflicting explanations.

                          Existing evidence

                          Use existing regressions where they already distinguish the model:

                          Add lint fixtures and focused ownership regressions only for claims the existing
                          evidence does not prove.

                          Out of scope

                          • Creating a generic authority primitive merely because several tests look
                            similar.
                          • Refactoring correct boundaries without an identified ownership failure.
                          • Adding behavior permutations that prove no distinct rule.

                          Activity

                          Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

                          Metadata

                          Metadata

                          Assignees

                          No one assigned

                            Labels

                            No labels
                            No labels

                            Projects

                            No projects

                              Milestone

                              No milestone

                              Relationships

                              None yet

                              Development

                              No branches or pull requests

                              Issue actions

                              , 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
                              Skip to content

                              Establish and enforce ownership rules for Effection scope and middleware #491

                              Description

                              @taras

                              Story

                              As a component or provider author, I want clear, enforced rules for Effection
                              scope and middleware, so I can tell who owns a resource, who may influence an
                              operation, who may authorize it, and what becomes durable history.

                              Example

                              A component installs middleware around a GitHub operation.

                              The middleware may observe the request, narrow it, refuse it, or delegate it. Its
                              lexical position does not let it manufacture an approved GitHub mutation or a
                              durable completion record.

                              The component's Effection scope owns the lifetime of live resources used while
                              the operation runs. The selected GitHub provider owns execution and its
                              authoritative outcome. The journal records the durable fact accepted for replay.

                              Those responsibilities compose, but they are not interchangeable.

                              Ownership model

                              Use five separate questions:

                              QuestionOwner
                              Who authored this work?Source site, including caller-projected content
                              Who owns its live lifetime and cleanup?Effection scope
                              Who may observe, narrow, redirect, refuse, or delegate it?Public middleware
                              Who may execute it and determine its canonical outcome?Canonical engine or selected provider terminal
                              What survives as accepted history?Journal or effect transaction

                              The mnemonic is:

                              Source owns authorship; scope owns lifetime; middleware owns policy;
                              canonical execution owns authority; the journal owns history.

                              Consequences

                              • Lexical enclosure does not grant execution authority or durable ownership.
                              • Component nesting and Effection scope often align, but they answer different
                                questions.
                              • Caller-authored projected content remains caller-authored while a callee's
                                scope supplies context and lifetime.
                              • Stable contextual names let separately loaded package copies compose. They do
                                not prove trust, identity, authority, or completion.
                              • Public middleware may route or refuse an authoritative operation. Its return
                                value is not completion evidence.
                              • Reconstructed scope and middleware during replay are current ephemeral policy,
                                not proof that a past effect occurred.

                              Ordinary return-valued middleware remains appropriate when the returned value is
                              the replaceable policy result and cannot establish authoritative execution or
                              durable truth.

                              Authoritative operations

                              When a public contextual value could otherwise manufacture execution,
                              persistent identity, or durable completion, use an execution-owned boundary
                              such as:

                              • a frozen invocation-specific request;
                              • a one-use request where repetition would be unsafe;
                              • a private provider terminal; or
                              • equivalent execution-owned state.

                              Public middleware may observe, refuse, and delegate the request. It cannot invoke
                              the private terminal or publish the canonical result. A fabricated request,
                              captured wrapper, or second loaded package copy authorizes nothing.

                              Do not apply this machinery to pure configuration, display, or another
                              intentionally replaceable result merely because it also uses middleware.

                              Repository audit

                              Audit production and test-support uses of:

                              • scoped, resource, useScope, and Scope.run;
                              • tasks spawned through captured scopes;
                              • Context and Api installation;
                              • middleware delegation; and
                              • provider or engine terminals.

                              For every distinct pattern, record:

                              1. the source site that authored the work;
                              2. the scope that owns resources and teardown;
                              3. the behavior public middleware may change;
                              4. the path that may author the canonical outcome; and
                              5. the record, if any, that becomes durable truth.

                              Classify correct patterns as examples. Identify violations including:

                              • redundant or incorrectly placed scopes;
                              • resources escaping into a broader captured scope without an ownership
                                contract;
                              • replaceable contextual state used as identity, trust, authority, or completion
                                evidence;
                              • public middleware manufacturing an authoritative result; and
                              • replay treating reconstructed policy as retained evidence.

                              Fix a violation here when the correction preserves settled behavior. If a fix
                              would change observable behavior, persistence, or a public API, create a focused
                              follow-up issue and link it. No known violation remains implicit.

                              Rules and guidance

                              For every rule:

                              • state the author decision and the failure it prevents;
                              • provide the smallest valid example;
                              • include a counterexample when syntax alone hides the ownership mistake;
                              • distinguish lifetime, policy, authority, and durability;
                              • put actionable coding rules in AGENTS.md;
                              • keep the complete model and rationale in architecture.md; and
                              • keep specifications focused on observable behavior.

                              Add a shared review checklist to the Architect, Planner, and Implementor guides.
                              It identifies the protected consequence, execution owner, settlement owner,
                              permitted middleware behavior, invocation identity, failure ordering, and any
                              contextual state that might be trusted incorrectly.

                              Register any new architecture term before using it as normative vocabulary.

                              Enforcement

                              Classify every established rule as:

                              1. Static: an AST pattern can reject the violation reliably.
                              2. Tested: behavior or conformance evidence can distinguish it.
                              3. Review-only: the decision depends on semantic context a linter cannot
                                prove.

                              Add enabled local Oxlint rules for every reliable static class. Each rule has
                              focused valid and invalid fixtures covering relevant aliases, namespace imports,
                              shadowing, and nearby valid code.

                              Do not add name-only heuristics that diagnose code without proving the forbidden
                              shape.

                              A suppression applies only to the exact site and includes a comment naming the
                              ownership or lifetime invariant that makes it valid. File-wide and
                              directory-wide exemptions are not enforcement.

                              Rules that cannot be linted receive focused tests where observable and explicit
                              review guidance otherwise.

                              Acceptance

                              • The audit accounts for every distinct production pattern and intentional
                                test-support variation.
                              • A reader can answer the five ownership questions independently for each
                                pattern.
                              • The rules state explicitly that lexical enclosure does not grant authority.
                              • Projected-content authorship and dynamic scope are distinguished.
                              • Stable-name composition is not treated as security or durable identity.
                              • The private-terminal/request pattern is documented once with its required
                                properties and limits.
                              • Pure configuration and display middleware remain appropriately simple.
                              • Replay accepts durable truth only through retained records and their admission
                                checks.
                              • Every rule has a static, tested, or review-only enforcement classification.
                              • Every reliable static class has an enabled Oxlint rule and regression fixtures.
                              • Architect, Planner, and Implementor guidance share the same ownership
                                checklist.
                              • Existing violations are corrected or linked to decision-ready follow-up
                                issues.
                              • Architecture references one coherent model instead of repeating apparently
                                conflicting explanations.

                              Existing evidence

                              Use existing regressions where they already distinguish the model:

                              Add lint fixtures and focused ownership regressions only for claims the existing
                              evidence does not prove.

                              Out of scope

                              • Creating a generic authority primitive merely because several tests look
                                similar.
                              • Refactoring correct boundaries without an identified ownership failure.
                              • Adding behavior permutations that prove no distinct rule.

                              Activity

                              Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

                              Metadata

                              Metadata

                              Assignees

                              No one assigned

                                Labels

                                No labels
                                No labels

                                Projects

                                No projects

                                  Milestone

                                  No milestone

                                  Relationships

                                  None yet

                                  Development

                                  No branches or pull requests

                                  Issue actions