RFC: establish repository and documentation ownership boundaries #767

Description

@Astro-Han

Summary

Maka now has three intended product surfaces—Desktop, TUI, and Headless—but its repository and documentation ownership have not evolved at the same pace.

This RFC proposes two related changes:

  1. clarify the boundary between products, shared packages, benchmarks, and generated state;
  2. define where stable documentation, local architecture, and time-sensitive plans belong.

The goal is not a repository-wide rewrite. It is to make ownership discoverable and prevent documentation and directory structure from drifting again.

Current problems

Documentation authority is unclear

Root and package READMEs, architecture contracts, implementation plans, research notes, issues, and PRs overlap.

This creates several failure modes:

  • readers cannot tell which document is authoritative;
  • time-sensitive progress is copied into long-lived documentation and becomes stale;
  • duplicate or superseded documents remain discoverable as if current;
  • package architecture exists in code or contributor knowledge but not near the package;
  • README content drifts from current exports, paths, scripts, and behavior.

This RFC continues the direction established by #725 and recent documentation work from @jackwener and @likun666661.

Repository ownership is unclear

The existing package dependency boundaries are generally sound, but the repository does not consistently distinguish:

  • product entry points from shared packages;
  • reusable headless mechanisms from benchmarks and experiments;
  • benchmark source from generated runs;
  • active design contracts from completed implementation plans.

Principles

  • Existing code and contract tests remain the final authority.
  • A package or directory must represent a real product, dependency, runtime, or ownership boundary.
  • Directory symmetry alone is not a reason to move code.
  • Stable direction belongs in documentation; time-sensitive progress belongs in issues and PRs.
  • Replaced paths should be removed rather than retained in parallel.
  • New abstractions should follow demonstrated consumers and constraints, not anticipated ones.
  • Each migration step must be independently verifiable and revertible.

Proposed ownership model

Documentation

LocationResponsibility
Root README.mdStable product overview, quick start, and repository navigation
Package/module README.mdLocal architecture, public seams, ownership, and where new code belongs
docs/Authoritative cross-cutting architecture, security, privacy, product, and validation contracts
Issues and PRsPlans, migration progress, implementation rounds, and TODOs
Source and contract testsFinal authority when documentation and implementation disagree

Add:

docs/README.md
docs/archive/

docs/README.md should identify current contracts, active proposals, local architecture READMEs, research, and historical material.

Completed plans should move to docs/archive/. Verified duplicate documents should be removed after references are updated.

Do not pre-create a large documentation hierarchy. Topic directories should appear only after a real document cluster exists.

Repository

Use the following minimal target shape:

apps/
desktop/
tui/ # moved from packages/cli
packages/
core/
storage/
runtime/
headless/
src/
harbor/
ui/
benchmarks/
terminal-bench/ # independent benchmark source
docs/
README.md
archive/
<current documents remain mostly flat>
scripts/
.local/ # ignored generated runs and artifacts

This is an ownership map, not a requirement to create empty directories.

Proposed changes

1. Move the interactive terminal product to apps/tui

Move:

packages/cli/

to:

apps/tui/

“TUI” describes the product more accurately and distinguishes it from the headless CLI.

Keep the existing package behavior and user-facing binaries:

maka
maka-agent

This is a Maka-specific semantic decision, not a universal rule that executables must live under apps/.

2. Retain the existing shared package boundaries

Keep:

packages/core/
packages/storage/
packages/runtime/
packages/headless/
packages/ui/

These packages currently enforce useful dependency or runtime boundaries.

Do not introduce packages/harness yet. Reconsider it when @maka/headless has another stable product consumer, a distinct deployment lifecycle, or a demonstrated dependency problem.

Do not rename @maka/core yet. Move incorrectly owned files incrementally when their destination is clear.

3. Separate benchmark source from generated state

Use:

benchmarks/ # independent runners, tasks, fixtures, configs
packages/headless/ # reusable mechanisms and supported adapters
.local/ # runs, logs, jobs, artifacts

Move independent Terminal-Bench assets under benchmarks/.

Keep packages/headless/harbor/maka_agent.py as the single Harbor adapter. Harbor, AHE, prompt optimization, and RSI code should move only after their ownership and public API boundaries are clear.

4. Keep cloud deployment as a Headless roadmap constraint

Headless should remain compatible with server and restricted-container execution.

Do not create apps/server until persistent service responsibilities such as remote APIs, scheduling, tenancy, or service-level credential management exist.

Open decisions

Test ownership

Which convention should Maka adopt?

  • tests colocated with source;
  • package-level test/ mirroring source;
  • the current src/__tests__/ layout.

The decision should consider ownership, navigation, integration-test boundaries, and migration cost. No repository-wide test move should happen before agreement.

Package-internal directories

When should a flat file cluster become a directory?

The decision should be based on stable responsibility, ownership, change coupling, or a useful public entry point—not a fixed file count.

Potential candidates include goals, compaction, subscriptions, sessions, and tools.

Headless versus Harness

What evidence should trigger splitting:

apps/headless/
packages/harness/

from the current packages/headless package?

Benchmark ownership

Which evaluation code is an independent benchmark, and which remains part of the supported Headless implementation?

Documentation freshness

Which safeguards are worth maintaining?

  • internal link and referenced-path checks;
  • validation of documented exports and scripts;
  • status markers for ambiguous documents;
  • package README coverage;
  • an explicit freshness owner.

The safeguard must cost less to maintain than the drift it prevents.

Rollout

Phase 1: documentation authority

  • Add docs/README.md.
  • Audit current documents.
  • Archive completed plans.
  • Remove verified duplicates.
  • Link package architecture READMEs from the index.
  • Add only lightweight freshness checks with demonstrated value.

Phase 2: repository classification

  • Establish .local/ for generated state.
  • Move packages/cli to apps/tui.
  • Move independent Terminal-Bench assets under benchmarks/.

Phase 3: incremental ownership cleanup

  • Resolve Headless and benchmark ownership before moving coupled code.
  • Move incorrectly owned core files only when their destination is clear.
  • Reorganize package-internal domains when those areas are materially changed.
  • Apply the agreed test convention to new or restructured modules.

Non-goals

  • Runtime behavior or storage format changes
  • User-facing binary renames
  • A repository-wide source or test migration
  • Empty apps/server or packages/harness scaffolding
  • Parallel old and new module paths
  • Moving files solely for visual symmetry
  • Copying another repository’s layout mechanically

References

Related Maka work:

Repository comparisons:

These projects use different layouts. This RFC therefore treats real ownership and dependency constraints—not directory convention—as the authority.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions

      , 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
       blocks
      (function() {
      function addCopyButtons() {
      document.querySelectorAll('pre code').forEach(function(codeBlock) {
      if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
      codeBlock.parentElement.setAttribute('data-copy-added', 'true');
      var btn = document.createElement('button');
      btn.textContent = 'Copy';
      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;';
      btn.onmouseover = function() { this.style.opacity = '1'; };
      btn.onmouseout = function() { this.style.opacity = '0.7'; };
      btn.onclick = function() {
      navigator.clipboard.writeText(codeBlock.textContent).then(function() {
      btn.textContent = 'Copied!';
      setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
      });
      };
      codeBlock.parentElement.style.position = 'relative';
      codeBlock.parentElement.appendChild(btn);
      });
      }
      addCopyButtons();
      // Re-run on dynamic content
      var observer = new MutationObserver(addCopyButtons);
      observer.observe(document.body, { childList: true, subtree: true });
      })();
      }
      } 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

      RFC: establish repository and documentation ownership boundaries #767

      Description

      @Astro-Han

      Summary

      Maka now has three intended product surfaces—Desktop, TUI, and Headless—but its repository and documentation ownership have not evolved at the same pace.

      This RFC proposes two related changes:

      1. clarify the boundary between products, shared packages, benchmarks, and generated state;
      2. define where stable documentation, local architecture, and time-sensitive plans belong.

      The goal is not a repository-wide rewrite. It is to make ownership discoverable and prevent documentation and directory structure from drifting again.

      Current problems

      Documentation authority is unclear

      Root and package READMEs, architecture contracts, implementation plans, research notes, issues, and PRs overlap.

      This creates several failure modes:

      • readers cannot tell which document is authoritative;
      • time-sensitive progress is copied into long-lived documentation and becomes stale;
      • duplicate or superseded documents remain discoverable as if current;
      • package architecture exists in code or contributor knowledge but not near the package;
      • README content drifts from current exports, paths, scripts, and behavior.

      This RFC continues the direction established by #725 and recent documentation work from @jackwener and @likun666661.

      Repository ownership is unclear

      The existing package dependency boundaries are generally sound, but the repository does not consistently distinguish:

      • product entry points from shared packages;
      • reusable headless mechanisms from benchmarks and experiments;
      • benchmark source from generated runs;
      • active design contracts from completed implementation plans.

      Principles

      • Existing code and contract tests remain the final authority.
      • A package or directory must represent a real product, dependency, runtime, or ownership boundary.
      • Directory symmetry alone is not a reason to move code.
      • Stable direction belongs in documentation; time-sensitive progress belongs in issues and PRs.
      • Replaced paths should be removed rather than retained in parallel.
      • New abstractions should follow demonstrated consumers and constraints, not anticipated ones.
      • Each migration step must be independently verifiable and revertible.

      Proposed ownership model

      Documentation

      LocationResponsibility
      Root README.mdStable product overview, quick start, and repository navigation
      Package/module README.mdLocal architecture, public seams, ownership, and where new code belongs
      docs/Authoritative cross-cutting architecture, security, privacy, product, and validation contracts
      Issues and PRsPlans, migration progress, implementation rounds, and TODOs
      Source and contract testsFinal authority when documentation and implementation disagree

      Add:

      docs/README.md
      docs/archive/
      

      docs/README.md should identify current contracts, active proposals, local architecture READMEs, research, and historical material.

      Completed plans should move to docs/archive/. Verified duplicate documents should be removed after references are updated.

      Do not pre-create a large documentation hierarchy. Topic directories should appear only after a real document cluster exists.

      Repository

      Use the following minimal target shape:

      apps/
      desktop/
      tui/ # moved from packages/cli
      packages/
      core/
      storage/
      runtime/
      headless/
      src/
      harbor/
      ui/
      benchmarks/
      terminal-bench/ # independent benchmark source
      docs/
      README.md
      archive/
      <current documents remain mostly flat>
      scripts/
      .local/ # ignored generated runs and artifacts
      

      This is an ownership map, not a requirement to create empty directories.

      Proposed changes

      1. Move the interactive terminal product to apps/tui

      Move:

      packages/cli/
      

      to:

      apps/tui/
      

      “TUI” describes the product more accurately and distinguishes it from the headless CLI.

      Keep the existing package behavior and user-facing binaries:

      maka
      maka-agent
      

      This is a Maka-specific semantic decision, not a universal rule that executables must live under apps/.

      2. Retain the existing shared package boundaries

      Keep:

      packages/core/
      packages/storage/
      packages/runtime/
      packages/headless/
      packages/ui/
      

      These packages currently enforce useful dependency or runtime boundaries.

      Do not introduce packages/harness yet. Reconsider it when @maka/headless has another stable product consumer, a distinct deployment lifecycle, or a demonstrated dependency problem.

      Do not rename @maka/core yet. Move incorrectly owned files incrementally when their destination is clear.

      3. Separate benchmark source from generated state

      Use:

      benchmarks/ # independent runners, tasks, fixtures, configs
      packages/headless/ # reusable mechanisms and supported adapters
      .local/ # runs, logs, jobs, artifacts
      

      Move independent Terminal-Bench assets under benchmarks/.

      Keep packages/headless/harbor/maka_agent.py as the single Harbor adapter. Harbor, AHE, prompt optimization, and RSI code should move only after their ownership and public API boundaries are clear.

      4. Keep cloud deployment as a Headless roadmap constraint

      Headless should remain compatible with server and restricted-container execution.

      Do not create apps/server until persistent service responsibilities such as remote APIs, scheduling, tenancy, or service-level credential management exist.

      Open decisions

      Test ownership

      Which convention should Maka adopt?

      • tests colocated with source;
      • package-level test/ mirroring source;
      • the current src/__tests__/ layout.

      The decision should consider ownership, navigation, integration-test boundaries, and migration cost. No repository-wide test move should happen before agreement.

      Package-internal directories

      When should a flat file cluster become a directory?

      The decision should be based on stable responsibility, ownership, change coupling, or a useful public entry point—not a fixed file count.

      Potential candidates include goals, compaction, subscriptions, sessions, and tools.

      Headless versus Harness

      What evidence should trigger splitting:

      apps/headless/
      packages/harness/
      

      from the current packages/headless package?

      Benchmark ownership

      Which evaluation code is an independent benchmark, and which remains part of the supported Headless implementation?

      Documentation freshness

      Which safeguards are worth maintaining?

      • internal link and referenced-path checks;
      • validation of documented exports and scripts;
      • status markers for ambiguous documents;
      • package README coverage;
      • an explicit freshness owner.

      The safeguard must cost less to maintain than the drift it prevents.

      Rollout

      Phase 1: documentation authority

      • Add docs/README.md.
      • Audit current documents.
      • Archive completed plans.
      • Remove verified duplicates.
      • Link package architecture READMEs from the index.
      • Add only lightweight freshness checks with demonstrated value.

      Phase 2: repository classification

      • Establish .local/ for generated state.
      • Move packages/cli to apps/tui.
      • Move independent Terminal-Bench assets under benchmarks/.

      Phase 3: incremental ownership cleanup

      • Resolve Headless and benchmark ownership before moving coupled code.
      • Move incorrectly owned core files only when their destination is clear.
      • Reorganize package-internal domains when those areas are materially changed.
      • Apply the agreed test convention to new or restructured modules.

      Non-goals

      • Runtime behavior or storage format changes
      • User-facing binary renames
      • A repository-wide source or test migration
      • Empty apps/server or packages/harness scaffolding
      • Parallel old and new module paths
      • Moving files solely for visual symmetry
      • Copying another repository’s layout mechanically

      References

      Related Maka work:

      Repository comparisons:

      These projects use different layouts. This RFC therefore treats real ownership and dependency constraints—not directory convention—as the authority.

      Metadata

      Metadata

      Assignees

      No one assigned

        Labels

        No labels
        No labels

        Type

        No type

        Projects

        No projects

          Milestone

          No milestone

          Relationships

          None yet

          Development

          No branches or pull requests

          Issue actions

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

          RFC: establish repository and documentation ownership boundaries #767

          Description

          @Astro-Han

          Summary

          Maka now has three intended product surfaces—Desktop, TUI, and Headless—but its repository and documentation ownership have not evolved at the same pace.

          This RFC proposes two related changes:

          1. clarify the boundary between products, shared packages, benchmarks, and generated state;
          2. define where stable documentation, local architecture, and time-sensitive plans belong.

          The goal is not a repository-wide rewrite. It is to make ownership discoverable and prevent documentation and directory structure from drifting again.

          Current problems

          Documentation authority is unclear

          Root and package READMEs, architecture contracts, implementation plans, research notes, issues, and PRs overlap.

          This creates several failure modes:

          • readers cannot tell which document is authoritative;
          • time-sensitive progress is copied into long-lived documentation and becomes stale;
          • duplicate or superseded documents remain discoverable as if current;
          • package architecture exists in code or contributor knowledge but not near the package;
          • README content drifts from current exports, paths, scripts, and behavior.

          This RFC continues the direction established by #725 and recent documentation work from @jackwener and @likun666661.

          Repository ownership is unclear

          The existing package dependency boundaries are generally sound, but the repository does not consistently distinguish:

          • product entry points from shared packages;
          • reusable headless mechanisms from benchmarks and experiments;
          • benchmark source from generated runs;
          • active design contracts from completed implementation plans.

          Principles

          • Existing code and contract tests remain the final authority.
          • A package or directory must represent a real product, dependency, runtime, or ownership boundary.
          • Directory symmetry alone is not a reason to move code.
          • Stable direction belongs in documentation; time-sensitive progress belongs in issues and PRs.
          • Replaced paths should be removed rather than retained in parallel.
          • New abstractions should follow demonstrated consumers and constraints, not anticipated ones.
          • Each migration step must be independently verifiable and revertible.

          Proposed ownership model

          Documentation

          LocationResponsibility
          Root README.mdStable product overview, quick start, and repository navigation
          Package/module README.mdLocal architecture, public seams, ownership, and where new code belongs
          docs/Authoritative cross-cutting architecture, security, privacy, product, and validation contracts
          Issues and PRsPlans, migration progress, implementation rounds, and TODOs
          Source and contract testsFinal authority when documentation and implementation disagree

          Add:

          docs/README.md
          docs/archive/
          

          docs/README.md should identify current contracts, active proposals, local architecture READMEs, research, and historical material.

          Completed plans should move to docs/archive/. Verified duplicate documents should be removed after references are updated.

          Do not pre-create a large documentation hierarchy. Topic directories should appear only after a real document cluster exists.

          Repository

          Use the following minimal target shape:

          apps/
          desktop/
          tui/ # moved from packages/cli
          packages/
          core/
          storage/
          runtime/
          headless/
          src/
          harbor/
          ui/
          benchmarks/
          terminal-bench/ # independent benchmark source
          docs/
          README.md
          archive/
          <current documents remain mostly flat>
          scripts/
          .local/ # ignored generated runs and artifacts
          

          This is an ownership map, not a requirement to create empty directories.

          Proposed changes

          1. Move the interactive terminal product to apps/tui

          Move:

          packages/cli/
          

          to:

          apps/tui/
          

          “TUI” describes the product more accurately and distinguishes it from the headless CLI.

          Keep the existing package behavior and user-facing binaries:

          maka
          maka-agent
          

          This is a Maka-specific semantic decision, not a universal rule that executables must live under apps/.

          2. Retain the existing shared package boundaries

          Keep:

          packages/core/
          packages/storage/
          packages/runtime/
          packages/headless/
          packages/ui/
          

          These packages currently enforce useful dependency or runtime boundaries.

          Do not introduce packages/harness yet. Reconsider it when @maka/headless has another stable product consumer, a distinct deployment lifecycle, or a demonstrated dependency problem.

          Do not rename @maka/core yet. Move incorrectly owned files incrementally when their destination is clear.

          3. Separate benchmark source from generated state

          Use:

          benchmarks/ # independent runners, tasks, fixtures, configs
          packages/headless/ # reusable mechanisms and supported adapters
          .local/ # runs, logs, jobs, artifacts
          

          Move independent Terminal-Bench assets under benchmarks/.

          Keep packages/headless/harbor/maka_agent.py as the single Harbor adapter. Harbor, AHE, prompt optimization, and RSI code should move only after their ownership and public API boundaries are clear.

          4. Keep cloud deployment as a Headless roadmap constraint

          Headless should remain compatible with server and restricted-container execution.

          Do not create apps/server until persistent service responsibilities such as remote APIs, scheduling, tenancy, or service-level credential management exist.

          Open decisions

          Test ownership

          Which convention should Maka adopt?

          • tests colocated with source;
          • package-level test/ mirroring source;
          • the current src/__tests__/ layout.

          The decision should consider ownership, navigation, integration-test boundaries, and migration cost. No repository-wide test move should happen before agreement.

          Package-internal directories

          When should a flat file cluster become a directory?

          The decision should be based on stable responsibility, ownership, change coupling, or a useful public entry point—not a fixed file count.

          Potential candidates include goals, compaction, subscriptions, sessions, and tools.

          Headless versus Harness

          What evidence should trigger splitting:

          apps/headless/
          packages/harness/
          

          from the current packages/headless package?

          Benchmark ownership

          Which evaluation code is an independent benchmark, and which remains part of the supported Headless implementation?

          Documentation freshness

          Which safeguards are worth maintaining?

          • internal link and referenced-path checks;
          • validation of documented exports and scripts;
          • status markers for ambiguous documents;
          • package README coverage;
          • an explicit freshness owner.

          The safeguard must cost less to maintain than the drift it prevents.

          Rollout

          Phase 1: documentation authority

          • Add docs/README.md.
          • Audit current documents.
          • Archive completed plans.
          • Remove verified duplicates.
          • Link package architecture READMEs from the index.
          • Add only lightweight freshness checks with demonstrated value.

          Phase 2: repository classification

          • Establish .local/ for generated state.
          • Move packages/cli to apps/tui.
          • Move independent Terminal-Bench assets under benchmarks/.

          Phase 3: incremental ownership cleanup

          • Resolve Headless and benchmark ownership before moving coupled code.
          • Move incorrectly owned core files only when their destination is clear.
          • Reorganize package-internal domains when those areas are materially changed.
          • Apply the agreed test convention to new or restructured modules.

          Non-goals

          • Runtime behavior or storage format changes
          • User-facing binary renames
          • A repository-wide source or test migration
          • Empty apps/server or packages/harness scaffolding
          • Parallel old and new module paths
          • Moving files solely for visual symmetry
          • Copying another repository’s layout mechanically

          References

          Related Maka work:

          Repository comparisons:

          These projects use different layouts. This RFC therefore treats real ownership and dependency constraints—not directory convention—as the authority.

          Metadata

          Metadata

          Assignees

          No one assigned

            Labels

            No labels
            No labels

            Type

            No type

            Projects

            No projects

              Milestone

              No milestone

              Relationships

              None yet

              Development

              No branches or pull requests

              Issue actions

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

              RFC: establish repository and documentation ownership boundaries #767

              Description

              @Astro-Han

              Summary

              Maka now has three intended product surfaces—Desktop, TUI, and Headless—but its repository and documentation ownership have not evolved at the same pace.

              This RFC proposes two related changes:

              1. clarify the boundary between products, shared packages, benchmarks, and generated state;
              2. define where stable documentation, local architecture, and time-sensitive plans belong.

              The goal is not a repository-wide rewrite. It is to make ownership discoverable and prevent documentation and directory structure from drifting again.

              Current problems

              Documentation authority is unclear

              Root and package READMEs, architecture contracts, implementation plans, research notes, issues, and PRs overlap.

              This creates several failure modes:

              • readers cannot tell which document is authoritative;
              • time-sensitive progress is copied into long-lived documentation and becomes stale;
              • duplicate or superseded documents remain discoverable as if current;
              • package architecture exists in code or contributor knowledge but not near the package;
              • README content drifts from current exports, paths, scripts, and behavior.

              This RFC continues the direction established by #725 and recent documentation work from @jackwener and @likun666661.

              Repository ownership is unclear

              The existing package dependency boundaries are generally sound, but the repository does not consistently distinguish:

              • product entry points from shared packages;
              • reusable headless mechanisms from benchmarks and experiments;
              • benchmark source from generated runs;
              • active design contracts from completed implementation plans.

              Principles

              • Existing code and contract tests remain the final authority.
              • A package or directory must represent a real product, dependency, runtime, or ownership boundary.
              • Directory symmetry alone is not a reason to move code.
              • Stable direction belongs in documentation; time-sensitive progress belongs in issues and PRs.
              • Replaced paths should be removed rather than retained in parallel.
              • New abstractions should follow demonstrated consumers and constraints, not anticipated ones.
              • Each migration step must be independently verifiable and revertible.

              Proposed ownership model

              Documentation

              LocationResponsibility
              Root README.mdStable product overview, quick start, and repository navigation
              Package/module README.mdLocal architecture, public seams, ownership, and where new code belongs
              docs/Authoritative cross-cutting architecture, security, privacy, product, and validation contracts
              Issues and PRsPlans, migration progress, implementation rounds, and TODOs
              Source and contract testsFinal authority when documentation and implementation disagree

              Add:

              docs/README.md
              docs/archive/
              

              docs/README.md should identify current contracts, active proposals, local architecture READMEs, research, and historical material.

              Completed plans should move to docs/archive/. Verified duplicate documents should be removed after references are updated.

              Do not pre-create a large documentation hierarchy. Topic directories should appear only after a real document cluster exists.

              Repository

              Use the following minimal target shape:

              apps/
              desktop/
              tui/ # moved from packages/cli
              packages/
              core/
              storage/
              runtime/
              headless/
              src/
              harbor/
              ui/
              benchmarks/
              terminal-bench/ # independent benchmark source
              docs/
              README.md
              archive/
              <current documents remain mostly flat>
              scripts/
              .local/ # ignored generated runs and artifacts
              

              This is an ownership map, not a requirement to create empty directories.

              Proposed changes

              1. Move the interactive terminal product to apps/tui

              Move:

              packages/cli/
              

              to:

              apps/tui/
              

              “TUI” describes the product more accurately and distinguishes it from the headless CLI.

              Keep the existing package behavior and user-facing binaries:

              maka
              maka-agent
              

              This is a Maka-specific semantic decision, not a universal rule that executables must live under apps/.

              2. Retain the existing shared package boundaries

              Keep:

              packages/core/
              packages/storage/
              packages/runtime/
              packages/headless/
              packages/ui/
              

              These packages currently enforce useful dependency or runtime boundaries.

              Do not introduce packages/harness yet. Reconsider it when @maka/headless has another stable product consumer, a distinct deployment lifecycle, or a demonstrated dependency problem.

              Do not rename @maka/core yet. Move incorrectly owned files incrementally when their destination is clear.

              3. Separate benchmark source from generated state

              Use:

              benchmarks/ # independent runners, tasks, fixtures, configs
              packages/headless/ # reusable mechanisms and supported adapters
              .local/ # runs, logs, jobs, artifacts
              

              Move independent Terminal-Bench assets under benchmarks/.

              Keep packages/headless/harbor/maka_agent.py as the single Harbor adapter. Harbor, AHE, prompt optimization, and RSI code should move only after their ownership and public API boundaries are clear.

              4. Keep cloud deployment as a Headless roadmap constraint

              Headless should remain compatible with server and restricted-container execution.

              Do not create apps/server until persistent service responsibilities such as remote APIs, scheduling, tenancy, or service-level credential management exist.

              Open decisions

              Test ownership

              Which convention should Maka adopt?

              • tests colocated with source;
              • package-level test/ mirroring source;
              • the current src/__tests__/ layout.

              The decision should consider ownership, navigation, integration-test boundaries, and migration cost. No repository-wide test move should happen before agreement.

              Package-internal directories

              When should a flat file cluster become a directory?

              The decision should be based on stable responsibility, ownership, change coupling, or a useful public entry point—not a fixed file count.

              Potential candidates include goals, compaction, subscriptions, sessions, and tools.

              Headless versus Harness

              What evidence should trigger splitting:

              apps/headless/
              packages/harness/
              

              from the current packages/headless package?

              Benchmark ownership

              Which evaluation code is an independent benchmark, and which remains part of the supported Headless implementation?

              Documentation freshness

              Which safeguards are worth maintaining?

              • internal link and referenced-path checks;
              • validation of documented exports and scripts;
              • status markers for ambiguous documents;
              • package README coverage;
              • an explicit freshness owner.

              The safeguard must cost less to maintain than the drift it prevents.

              Rollout

              Phase 1: documentation authority

              • Add docs/README.md.
              • Audit current documents.
              • Archive completed plans.
              • Remove verified duplicates.
              • Link package architecture READMEs from the index.
              • Add only lightweight freshness checks with demonstrated value.

              Phase 2: repository classification

              • Establish .local/ for generated state.
              • Move packages/cli to apps/tui.
              • Move independent Terminal-Bench assets under benchmarks/.

              Phase 3: incremental ownership cleanup

              • Resolve Headless and benchmark ownership before moving coupled code.
              • Move incorrectly owned core files only when their destination is clear.
              • Reorganize package-internal domains when those areas are materially changed.
              • Apply the agreed test convention to new or restructured modules.

              Non-goals

              • Runtime behavior or storage format changes
              • User-facing binary renames
              • A repository-wide source or test migration
              • Empty apps/server or packages/harness scaffolding
              • Parallel old and new module paths
              • Moving files solely for visual symmetry
              • Copying another repository’s layout mechanically

              References

              Related Maka work:

              Repository comparisons:

              These projects use different layouts. This RFC therefore treats real ownership and dependency constraints—not directory convention—as the authority.

              Metadata

              Metadata

              Assignees

              No one assigned

                Labels

                No labels
                No labels

                Type

                No type

                Projects

                No projects

                  Milestone

                  No milestone

                  Relationships

                  None yet

                  Development

                  No branches or pull requests

                  Issue actions

                  , 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } 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

                  RFC: establish repository and documentation ownership boundaries #767

                  Description

                  @Astro-Han

                  Summary

                  Maka now has three intended product surfaces—Desktop, TUI, and Headless—but its repository and documentation ownership have not evolved at the same pace.

                  This RFC proposes two related changes:

                  1. clarify the boundary between products, shared packages, benchmarks, and generated state;
                  2. define where stable documentation, local architecture, and time-sensitive plans belong.

                  The goal is not a repository-wide rewrite. It is to make ownership discoverable and prevent documentation and directory structure from drifting again.

                  Current problems

                  Documentation authority is unclear

                  Root and package READMEs, architecture contracts, implementation plans, research notes, issues, and PRs overlap.

                  This creates several failure modes:

                  • readers cannot tell which document is authoritative;
                  • time-sensitive progress is copied into long-lived documentation and becomes stale;
                  • duplicate or superseded documents remain discoverable as if current;
                  • package architecture exists in code or contributor knowledge but not near the package;
                  • README content drifts from current exports, paths, scripts, and behavior.

                  This RFC continues the direction established by #725 and recent documentation work from @jackwener and @likun666661.

                  Repository ownership is unclear

                  The existing package dependency boundaries are generally sound, but the repository does not consistently distinguish:

                  • product entry points from shared packages;
                  • reusable headless mechanisms from benchmarks and experiments;
                  • benchmark source from generated runs;
                  • active design contracts from completed implementation plans.

                  Principles

                  • Existing code and contract tests remain the final authority.
                  • A package or directory must represent a real product, dependency, runtime, or ownership boundary.
                  • Directory symmetry alone is not a reason to move code.
                  • Stable direction belongs in documentation; time-sensitive progress belongs in issues and PRs.
                  • Replaced paths should be removed rather than retained in parallel.
                  • New abstractions should follow demonstrated consumers and constraints, not anticipated ones.
                  • Each migration step must be independently verifiable and revertible.

                  Proposed ownership model

                  Documentation

                  LocationResponsibility
                  Root README.mdStable product overview, quick start, and repository navigation
                  Package/module README.mdLocal architecture, public seams, ownership, and where new code belongs
                  docs/Authoritative cross-cutting architecture, security, privacy, product, and validation contracts
                  Issues and PRsPlans, migration progress, implementation rounds, and TODOs
                  Source and contract testsFinal authority when documentation and implementation disagree

                  Add:

                  docs/README.md
                  docs/archive/
                  

                  docs/README.md should identify current contracts, active proposals, local architecture READMEs, research, and historical material.

                  Completed plans should move to docs/archive/. Verified duplicate documents should be removed after references are updated.

                  Do not pre-create a large documentation hierarchy. Topic directories should appear only after a real document cluster exists.

                  Repository

                  Use the following minimal target shape:

                  apps/
                  desktop/
                  tui/ # moved from packages/cli
                  packages/
                  core/
                  storage/
                  runtime/
                  headless/
                  src/
                  harbor/
                  ui/
                  benchmarks/
                  terminal-bench/ # independent benchmark source
                  docs/
                  README.md
                  archive/
                  <current documents remain mostly flat>
                  scripts/
                  .local/ # ignored generated runs and artifacts
                  

                  This is an ownership map, not a requirement to create empty directories.

                  Proposed changes

                  1. Move the interactive terminal product to apps/tui

                  Move:

                  packages/cli/
                  

                  to:

                  apps/tui/
                  

                  “TUI” describes the product more accurately and distinguishes it from the headless CLI.

                  Keep the existing package behavior and user-facing binaries:

                  maka
                  maka-agent
                  

                  This is a Maka-specific semantic decision, not a universal rule that executables must live under apps/.

                  2. Retain the existing shared package boundaries

                  Keep:

                  packages/core/
                  packages/storage/
                  packages/runtime/
                  packages/headless/
                  packages/ui/
                  

                  These packages currently enforce useful dependency or runtime boundaries.

                  Do not introduce packages/harness yet. Reconsider it when @maka/headless has another stable product consumer, a distinct deployment lifecycle, or a demonstrated dependency problem.

                  Do not rename @maka/core yet. Move incorrectly owned files incrementally when their destination is clear.

                  3. Separate benchmark source from generated state

                  Use:

                  benchmarks/ # independent runners, tasks, fixtures, configs
                  packages/headless/ # reusable mechanisms and supported adapters
                  .local/ # runs, logs, jobs, artifacts
                  

                  Move independent Terminal-Bench assets under benchmarks/.

                  Keep packages/headless/harbor/maka_agent.py as the single Harbor adapter. Harbor, AHE, prompt optimization, and RSI code should move only after their ownership and public API boundaries are clear.

                  4. Keep cloud deployment as a Headless roadmap constraint

                  Headless should remain compatible with server and restricted-container execution.

                  Do not create apps/server until persistent service responsibilities such as remote APIs, scheduling, tenancy, or service-level credential management exist.

                  Open decisions

                  Test ownership

                  Which convention should Maka adopt?

                  • tests colocated with source;
                  • package-level test/ mirroring source;
                  • the current src/__tests__/ layout.

                  The decision should consider ownership, navigation, integration-test boundaries, and migration cost. No repository-wide test move should happen before agreement.

                  Package-internal directories

                  When should a flat file cluster become a directory?

                  The decision should be based on stable responsibility, ownership, change coupling, or a useful public entry point—not a fixed file count.

                  Potential candidates include goals, compaction, subscriptions, sessions, and tools.

                  Headless versus Harness

                  What evidence should trigger splitting:

                  apps/headless/
                  packages/harness/
                  

                  from the current packages/headless package?

                  Benchmark ownership

                  Which evaluation code is an independent benchmark, and which remains part of the supported Headless implementation?

                  Documentation freshness

                  Which safeguards are worth maintaining?

                  • internal link and referenced-path checks;
                  • validation of documented exports and scripts;
                  • status markers for ambiguous documents;
                  • package README coverage;
                  • an explicit freshness owner.

                  The safeguard must cost less to maintain than the drift it prevents.

                  Rollout

                  Phase 1: documentation authority

                  • Add docs/README.md.
                  • Audit current documents.
                  • Archive completed plans.
                  • Remove verified duplicates.
                  • Link package architecture READMEs from the index.
                  • Add only lightweight freshness checks with demonstrated value.

                  Phase 2: repository classification

                  • Establish .local/ for generated state.
                  • Move packages/cli to apps/tui.
                  • Move independent Terminal-Bench assets under benchmarks/.

                  Phase 3: incremental ownership cleanup

                  • Resolve Headless and benchmark ownership before moving coupled code.
                  • Move incorrectly owned core files only when their destination is clear.
                  • Reorganize package-internal domains when those areas are materially changed.
                  • Apply the agreed test convention to new or restructured modules.

                  Non-goals

                  • Runtime behavior or storage format changes
                  • User-facing binary renames
                  • A repository-wide source or test migration
                  • Empty apps/server or packages/harness scaffolding
                  • Parallel old and new module paths
                  • Moving files solely for visual symmetry
                  • Copying another repository’s layout mechanically

                  References

                  Related Maka work:

                  Repository comparisons:

                  These projects use different layouts. This RFC therefore treats real ownership and dependency constraints—not directory convention—as the authority.

                  Metadata

                  Metadata

                  Assignees

                  No one assigned

                    Labels

                    No labels
                    No labels

                    Type

                    No type

                    Projects

                    No projects

                      Milestone

                      No milestone

                      Relationships

                      None yet

                      Development

                      No branches or pull requests

                      Issue actions

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

                      RFC: establish repository and documentation ownership boundaries #767

                      Description

                      @Astro-Han

                      Summary

                      Maka now has three intended product surfaces—Desktop, TUI, and Headless—but its repository and documentation ownership have not evolved at the same pace.

                      This RFC proposes two related changes:

                      1. clarify the boundary between products, shared packages, benchmarks, and generated state;
                      2. define where stable documentation, local architecture, and time-sensitive plans belong.

                      The goal is not a repository-wide rewrite. It is to make ownership discoverable and prevent documentation and directory structure from drifting again.

                      Current problems

                      Documentation authority is unclear

                      Root and package READMEs, architecture contracts, implementation plans, research notes, issues, and PRs overlap.

                      This creates several failure modes:

                      • readers cannot tell which document is authoritative;
                      • time-sensitive progress is copied into long-lived documentation and becomes stale;
                      • duplicate or superseded documents remain discoverable as if current;
                      • package architecture exists in code or contributor knowledge but not near the package;
                      • README content drifts from current exports, paths, scripts, and behavior.

                      This RFC continues the direction established by #725 and recent documentation work from @jackwener and @likun666661.

                      Repository ownership is unclear

                      The existing package dependency boundaries are generally sound, but the repository does not consistently distinguish:

                      • product entry points from shared packages;
                      • reusable headless mechanisms from benchmarks and experiments;
                      • benchmark source from generated runs;
                      • active design contracts from completed implementation plans.

                      Principles

                      • Existing code and contract tests remain the final authority.
                      • A package or directory must represent a real product, dependency, runtime, or ownership boundary.
                      • Directory symmetry alone is not a reason to move code.
                      • Stable direction belongs in documentation; time-sensitive progress belongs in issues and PRs.
                      • Replaced paths should be removed rather than retained in parallel.
                      • New abstractions should follow demonstrated consumers and constraints, not anticipated ones.
                      • Each migration step must be independently verifiable and revertible.

                      Proposed ownership model

                      Documentation

                      LocationResponsibility
                      Root README.mdStable product overview, quick start, and repository navigation
                      Package/module README.mdLocal architecture, public seams, ownership, and where new code belongs
                      docs/Authoritative cross-cutting architecture, security, privacy, product, and validation contracts
                      Issues and PRsPlans, migration progress, implementation rounds, and TODOs
                      Source and contract testsFinal authority when documentation and implementation disagree

                      Add:

                      docs/README.md
                      docs/archive/
                      

                      docs/README.md should identify current contracts, active proposals, local architecture READMEs, research, and historical material.

                      Completed plans should move to docs/archive/. Verified duplicate documents should be removed after references are updated.

                      Do not pre-create a large documentation hierarchy. Topic directories should appear only after a real document cluster exists.

                      Repository

                      Use the following minimal target shape:

                      apps/
                      desktop/
                      tui/ # moved from packages/cli
                      packages/
                      core/
                      storage/
                      runtime/
                      headless/
                      src/
                      harbor/
                      ui/
                      benchmarks/
                      terminal-bench/ # independent benchmark source
                      docs/
                      README.md
                      archive/
                      <current documents remain mostly flat>
                      scripts/
                      .local/ # ignored generated runs and artifacts
                      

                      This is an ownership map, not a requirement to create empty directories.

                      Proposed changes

                      1. Move the interactive terminal product to apps/tui

                      Move:

                      packages/cli/
                      

                      to:

                      apps/tui/
                      

                      “TUI” describes the product more accurately and distinguishes it from the headless CLI.

                      Keep the existing package behavior and user-facing binaries:

                      maka
                      maka-agent
                      

                      This is a Maka-specific semantic decision, not a universal rule that executables must live under apps/.

                      2. Retain the existing shared package boundaries

                      Keep:

                      packages/core/
                      packages/storage/
                      packages/runtime/
                      packages/headless/
                      packages/ui/
                      

                      These packages currently enforce useful dependency or runtime boundaries.

                      Do not introduce packages/harness yet. Reconsider it when @maka/headless has another stable product consumer, a distinct deployment lifecycle, or a demonstrated dependency problem.

                      Do not rename @maka/core yet. Move incorrectly owned files incrementally when their destination is clear.

                      3. Separate benchmark source from generated state

                      Use:

                      benchmarks/ # independent runners, tasks, fixtures, configs
                      packages/headless/ # reusable mechanisms and supported adapters
                      .local/ # runs, logs, jobs, artifacts
                      

                      Move independent Terminal-Bench assets under benchmarks/.

                      Keep packages/headless/harbor/maka_agent.py as the single Harbor adapter. Harbor, AHE, prompt optimization, and RSI code should move only after their ownership and public API boundaries are clear.

                      4. Keep cloud deployment as a Headless roadmap constraint

                      Headless should remain compatible with server and restricted-container execution.

                      Do not create apps/server until persistent service responsibilities such as remote APIs, scheduling, tenancy, or service-level credential management exist.

                      Open decisions

                      Test ownership

                      Which convention should Maka adopt?

                      • tests colocated with source;
                      • package-level test/ mirroring source;
                      • the current src/__tests__/ layout.

                      The decision should consider ownership, navigation, integration-test boundaries, and migration cost. No repository-wide test move should happen before agreement.

                      Package-internal directories

                      When should a flat file cluster become a directory?

                      The decision should be based on stable responsibility, ownership, change coupling, or a useful public entry point—not a fixed file count.

                      Potential candidates include goals, compaction, subscriptions, sessions, and tools.

                      Headless versus Harness

                      What evidence should trigger splitting:

                      apps/headless/
                      packages/harness/
                      

                      from the current packages/headless package?

                      Benchmark ownership

                      Which evaluation code is an independent benchmark, and which remains part of the supported Headless implementation?

                      Documentation freshness

                      Which safeguards are worth maintaining?

                      • internal link and referenced-path checks;
                      • validation of documented exports and scripts;
                      • status markers for ambiguous documents;
                      • package README coverage;
                      • an explicit freshness owner.

                      The safeguard must cost less to maintain than the drift it prevents.

                      Rollout

                      Phase 1: documentation authority

                      • Add docs/README.md.
                      • Audit current documents.
                      • Archive completed plans.
                      • Remove verified duplicates.
                      • Link package architecture READMEs from the index.
                      • Add only lightweight freshness checks with demonstrated value.

                      Phase 2: repository classification

                      • Establish .local/ for generated state.
                      • Move packages/cli to apps/tui.
                      • Move independent Terminal-Bench assets under benchmarks/.

                      Phase 3: incremental ownership cleanup

                      • Resolve Headless and benchmark ownership before moving coupled code.
                      • Move incorrectly owned core files only when their destination is clear.
                      • Reorganize package-internal domains when those areas are materially changed.
                      • Apply the agreed test convention to new or restructured modules.

                      Non-goals

                      • Runtime behavior or storage format changes
                      • User-facing binary renames
                      • A repository-wide source or test migration
                      • Empty apps/server or packages/harness scaffolding
                      • Parallel old and new module paths
                      • Moving files solely for visual symmetry
                      • Copying another repository’s layout mechanically

                      References

                      Related Maka work:

                      Repository comparisons:

                      These projects use different layouts. This RFC therefore treats real ownership and dependency constraints—not directory convention—as the authority.

                      Metadata

                      Metadata

                      Assignees

                      No one assigned

                        Labels

                        No labels
                        No labels

                        Type

                        No type

                        Projects

                        No projects

                          Milestone

                          No milestone

                          Relationships

                          None yet

                          Development

                          No branches or pull requests

                          Issue actions

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

                          RFC: establish repository and documentation ownership boundaries #767

                          Description

                          @Astro-Han

                          Summary

                          Maka now has three intended product surfaces—Desktop, TUI, and Headless—but its repository and documentation ownership have not evolved at the same pace.

                          This RFC proposes two related changes:

                          1. clarify the boundary between products, shared packages, benchmarks, and generated state;
                          2. define where stable documentation, local architecture, and time-sensitive plans belong.

                          The goal is not a repository-wide rewrite. It is to make ownership discoverable and prevent documentation and directory structure from drifting again.

                          Current problems

                          Documentation authority is unclear

                          Root and package READMEs, architecture contracts, implementation plans, research notes, issues, and PRs overlap.

                          This creates several failure modes:

                          • readers cannot tell which document is authoritative;
                          • time-sensitive progress is copied into long-lived documentation and becomes stale;
                          • duplicate or superseded documents remain discoverable as if current;
                          • package architecture exists in code or contributor knowledge but not near the package;
                          • README content drifts from current exports, paths, scripts, and behavior.

                          This RFC continues the direction established by #725 and recent documentation work from @jackwener and @likun666661.

                          Repository ownership is unclear

                          The existing package dependency boundaries are generally sound, but the repository does not consistently distinguish:

                          • product entry points from shared packages;
                          • reusable headless mechanisms from benchmarks and experiments;
                          • benchmark source from generated runs;
                          • active design contracts from completed implementation plans.

                          Principles

                          • Existing code and contract tests remain the final authority.
                          • A package or directory must represent a real product, dependency, runtime, or ownership boundary.
                          • Directory symmetry alone is not a reason to move code.
                          • Stable direction belongs in documentation; time-sensitive progress belongs in issues and PRs.
                          • Replaced paths should be removed rather than retained in parallel.
                          • New abstractions should follow demonstrated consumers and constraints, not anticipated ones.
                          • Each migration step must be independently verifiable and revertible.

                          Proposed ownership model

                          Documentation

                          LocationResponsibility
                          Root README.mdStable product overview, quick start, and repository navigation
                          Package/module README.mdLocal architecture, public seams, ownership, and where new code belongs
                          docs/Authoritative cross-cutting architecture, security, privacy, product, and validation contracts
                          Issues and PRsPlans, migration progress, implementation rounds, and TODOs
                          Source and contract testsFinal authority when documentation and implementation disagree

                          Add:

                          docs/README.md
                          docs/archive/
                          

                          docs/README.md should identify current contracts, active proposals, local architecture READMEs, research, and historical material.

                          Completed plans should move to docs/archive/. Verified duplicate documents should be removed after references are updated.

                          Do not pre-create a large documentation hierarchy. Topic directories should appear only after a real document cluster exists.

                          Repository

                          Use the following minimal target shape:

                          apps/
                          desktop/
                          tui/ # moved from packages/cli
                          packages/
                          core/
                          storage/
                          runtime/
                          headless/
                          src/
                          harbor/
                          ui/
                          benchmarks/
                          terminal-bench/ # independent benchmark source
                          docs/
                          README.md
                          archive/
                          <current documents remain mostly flat>
                          scripts/
                          .local/ # ignored generated runs and artifacts
                          

                          This is an ownership map, not a requirement to create empty directories.

                          Proposed changes

                          1. Move the interactive terminal product to apps/tui

                          Move:

                          packages/cli/
                          

                          to:

                          apps/tui/
                          

                          “TUI” describes the product more accurately and distinguishes it from the headless CLI.

                          Keep the existing package behavior and user-facing binaries:

                          maka
                          maka-agent
                          

                          This is a Maka-specific semantic decision, not a universal rule that executables must live under apps/.

                          2. Retain the existing shared package boundaries

                          Keep:

                          packages/core/
                          packages/storage/
                          packages/runtime/
                          packages/headless/
                          packages/ui/
                          

                          These packages currently enforce useful dependency or runtime boundaries.

                          Do not introduce packages/harness yet. Reconsider it when @maka/headless has another stable product consumer, a distinct deployment lifecycle, or a demonstrated dependency problem.

                          Do not rename @maka/core yet. Move incorrectly owned files incrementally when their destination is clear.

                          3. Separate benchmark source from generated state

                          Use:

                          benchmarks/ # independent runners, tasks, fixtures, configs
                          packages/headless/ # reusable mechanisms and supported adapters
                          .local/ # runs, logs, jobs, artifacts
                          

                          Move independent Terminal-Bench assets under benchmarks/.

                          Keep packages/headless/harbor/maka_agent.py as the single Harbor adapter. Harbor, AHE, prompt optimization, and RSI code should move only after their ownership and public API boundaries are clear.

                          4. Keep cloud deployment as a Headless roadmap constraint

                          Headless should remain compatible with server and restricted-container execution.

                          Do not create apps/server until persistent service responsibilities such as remote APIs, scheduling, tenancy, or service-level credential management exist.

                          Open decisions

                          Test ownership

                          Which convention should Maka adopt?

                          • tests colocated with source;
                          • package-level test/ mirroring source;
                          • the current src/__tests__/ layout.

                          The decision should consider ownership, navigation, integration-test boundaries, and migration cost. No repository-wide test move should happen before agreement.

                          Package-internal directories

                          When should a flat file cluster become a directory?

                          The decision should be based on stable responsibility, ownership, change coupling, or a useful public entry point—not a fixed file count.

                          Potential candidates include goals, compaction, subscriptions, sessions, and tools.

                          Headless versus Harness

                          What evidence should trigger splitting:

                          apps/headless/
                          packages/harness/
                          

                          from the current packages/headless package?

                          Benchmark ownership

                          Which evaluation code is an independent benchmark, and which remains part of the supported Headless implementation?

                          Documentation freshness

                          Which safeguards are worth maintaining?

                          • internal link and referenced-path checks;
                          • validation of documented exports and scripts;
                          • status markers for ambiguous documents;
                          • package README coverage;
                          • an explicit freshness owner.

                          The safeguard must cost less to maintain than the drift it prevents.

                          Rollout

                          Phase 1: documentation authority

                          • Add docs/README.md.
                          • Audit current documents.
                          • Archive completed plans.
                          • Remove verified duplicates.
                          • Link package architecture READMEs from the index.
                          • Add only lightweight freshness checks with demonstrated value.

                          Phase 2: repository classification

                          • Establish .local/ for generated state.
                          • Move packages/cli to apps/tui.
                          • Move independent Terminal-Bench assets under benchmarks/.

                          Phase 3: incremental ownership cleanup

                          • Resolve Headless and benchmark ownership before moving coupled code.
                          • Move incorrectly owned core files only when their destination is clear.
                          • Reorganize package-internal domains when those areas are materially changed.
                          • Apply the agreed test convention to new or restructured modules.

                          Non-goals

                          • Runtime behavior or storage format changes
                          • User-facing binary renames
                          • A repository-wide source or test migration
                          • Empty apps/server or packages/harness scaffolding
                          • Parallel old and new module paths
                          • Moving files solely for visual symmetry
                          • Copying another repository’s layout mechanically

                          References

                          Related Maka work:

                          Repository comparisons:

                          These projects use different layouts. This RFC therefore treats real ownership and dependency constraints—not directory convention—as the authority.

                          Metadata

                          Metadata

                          Assignees

                          No one assigned

                            Labels

                            No labels
                            No labels

                            Type

                            No type

                            Projects

                            No projects

                              Milestone

                              No milestone

                              Relationships

                              None yet

                              Development

                              No branches or pull requests

                              Issue actions

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

                              RFC: establish repository and documentation ownership boundaries #767

                              Description

                              @Astro-Han

                              Summary

                              Maka now has three intended product surfaces—Desktop, TUI, and Headless—but its repository and documentation ownership have not evolved at the same pace.

                              This RFC proposes two related changes:

                              1. clarify the boundary between products, shared packages, benchmarks, and generated state;
                              2. define where stable documentation, local architecture, and time-sensitive plans belong.

                              The goal is not a repository-wide rewrite. It is to make ownership discoverable and prevent documentation and directory structure from drifting again.

                              Current problems

                              Documentation authority is unclear

                              Root and package READMEs, architecture contracts, implementation plans, research notes, issues, and PRs overlap.

                              This creates several failure modes:

                              • readers cannot tell which document is authoritative;
                              • time-sensitive progress is copied into long-lived documentation and becomes stale;
                              • duplicate or superseded documents remain discoverable as if current;
                              • package architecture exists in code or contributor knowledge but not near the package;
                              • README content drifts from current exports, paths, scripts, and behavior.

                              This RFC continues the direction established by #725 and recent documentation work from @jackwener and @likun666661.

                              Repository ownership is unclear

                              The existing package dependency boundaries are generally sound, but the repository does not consistently distinguish:

                              • product entry points from shared packages;
                              • reusable headless mechanisms from benchmarks and experiments;
                              • benchmark source from generated runs;
                              • active design contracts from completed implementation plans.

                              Principles

                              • Existing code and contract tests remain the final authority.
                              • A package or directory must represent a real product, dependency, runtime, or ownership boundary.
                              • Directory symmetry alone is not a reason to move code.
                              • Stable direction belongs in documentation; time-sensitive progress belongs in issues and PRs.
                              • Replaced paths should be removed rather than retained in parallel.
                              • New abstractions should follow demonstrated consumers and constraints, not anticipated ones.
                              • Each migration step must be independently verifiable and revertible.

                              Proposed ownership model

                              Documentation

                              LocationResponsibility
                              Root README.mdStable product overview, quick start, and repository navigation
                              Package/module README.mdLocal architecture, public seams, ownership, and where new code belongs
                              docs/Authoritative cross-cutting architecture, security, privacy, product, and validation contracts
                              Issues and PRsPlans, migration progress, implementation rounds, and TODOs
                              Source and contract testsFinal authority when documentation and implementation disagree

                              Add:

                              docs/README.md
                              docs/archive/
                              

                              docs/README.md should identify current contracts, active proposals, local architecture READMEs, research, and historical material.

                              Completed plans should move to docs/archive/. Verified duplicate documents should be removed after references are updated.

                              Do not pre-create a large documentation hierarchy. Topic directories should appear only after a real document cluster exists.

                              Repository

                              Use the following minimal target shape:

                              apps/
                              desktop/
                              tui/ # moved from packages/cli
                              packages/
                              core/
                              storage/
                              runtime/
                              headless/
                              src/
                              harbor/
                              ui/
                              benchmarks/
                              terminal-bench/ # independent benchmark source
                              docs/
                              README.md
                              archive/
                              <current documents remain mostly flat>
                              scripts/
                              .local/ # ignored generated runs and artifacts
                              

                              This is an ownership map, not a requirement to create empty directories.

                              Proposed changes

                              1. Move the interactive terminal product to apps/tui

                              Move:

                              packages/cli/
                              

                              to:

                              apps/tui/
                              

                              “TUI” describes the product more accurately and distinguishes it from the headless CLI.

                              Keep the existing package behavior and user-facing binaries:

                              maka
                              maka-agent
                              

                              This is a Maka-specific semantic decision, not a universal rule that executables must live under apps/.

                              2. Retain the existing shared package boundaries

                              Keep:

                              packages/core/
                              packages/storage/
                              packages/runtime/
                              packages/headless/
                              packages/ui/
                              

                              These packages currently enforce useful dependency or runtime boundaries.

                              Do not introduce packages/harness yet. Reconsider it when @maka/headless has another stable product consumer, a distinct deployment lifecycle, or a demonstrated dependency problem.

                              Do not rename @maka/core yet. Move incorrectly owned files incrementally when their destination is clear.

                              3. Separate benchmark source from generated state

                              Use:

                              benchmarks/ # independent runners, tasks, fixtures, configs
                              packages/headless/ # reusable mechanisms and supported adapters
                              .local/ # runs, logs, jobs, artifacts
                              

                              Move independent Terminal-Bench assets under benchmarks/.

                              Keep packages/headless/harbor/maka_agent.py as the single Harbor adapter. Harbor, AHE, prompt optimization, and RSI code should move only after their ownership and public API boundaries are clear.

                              4. Keep cloud deployment as a Headless roadmap constraint

                              Headless should remain compatible with server and restricted-container execution.

                              Do not create apps/server until persistent service responsibilities such as remote APIs, scheduling, tenancy, or service-level credential management exist.

                              Open decisions

                              Test ownership

                              Which convention should Maka adopt?

                              • tests colocated with source;
                              • package-level test/ mirroring source;
                              • the current src/__tests__/ layout.

                              The decision should consider ownership, navigation, integration-test boundaries, and migration cost. No repository-wide test move should happen before agreement.

                              Package-internal directories

                              When should a flat file cluster become a directory?

                              The decision should be based on stable responsibility, ownership, change coupling, or a useful public entry point—not a fixed file count.

                              Potential candidates include goals, compaction, subscriptions, sessions, and tools.

                              Headless versus Harness

                              What evidence should trigger splitting:

                              apps/headless/
                              packages/harness/
                              

                              from the current packages/headless package?

                              Benchmark ownership

                              Which evaluation code is an independent benchmark, and which remains part of the supported Headless implementation?

                              Documentation freshness

                              Which safeguards are worth maintaining?

                              • internal link and referenced-path checks;
                              • validation of documented exports and scripts;
                              • status markers for ambiguous documents;
                              • package README coverage;
                              • an explicit freshness owner.

                              The safeguard must cost less to maintain than the drift it prevents.

                              Rollout

                              Phase 1: documentation authority

                              • Add docs/README.md.
                              • Audit current documents.
                              • Archive completed plans.
                              • Remove verified duplicates.
                              • Link package architecture READMEs from the index.
                              • Add only lightweight freshness checks with demonstrated value.

                              Phase 2: repository classification

                              • Establish .local/ for generated state.
                              • Move packages/cli to apps/tui.
                              • Move independent Terminal-Bench assets under benchmarks/.

                              Phase 3: incremental ownership cleanup

                              • Resolve Headless and benchmark ownership before moving coupled code.
                              • Move incorrectly owned core files only when their destination is clear.
                              • Reorganize package-internal domains when those areas are materially changed.
                              • Apply the agreed test convention to new or restructured modules.

                              Non-goals

                              • Runtime behavior or storage format changes
                              • User-facing binary renames
                              • A repository-wide source or test migration
                              • Empty apps/server or packages/harness scaffolding
                              • Parallel old and new module paths
                              • Moving files solely for visual symmetry
                              • Copying another repository’s layout mechanically

                              References

                              Related Maka work:

                              Repository comparisons:

                              These projects use different layouts. This RFC therefore treats real ownership and dependency constraints—not directory convention—as the authority.

                              Metadata

                              Metadata

                              Assignees

                              No one assigned

                                Labels

                                No labels
                                No labels

                                Type

                                No type

                                Projects

                                No projects

                                  Milestone

                                  No milestone

                                  Relationships

                                  None yet

                                  Development

                                  No branches or pull requests

                                  Issue actions