[finding] Seven more source comments name deleted in-repo app paths (apps/objectos, apps/cloud) as live — same class as #14634, outside its ruled scope #14806

Description

@os-trump

Found while implementing #14634 (dev seat, session session_016yfqQh2dBgPAymYd7xipza, branch claude/issue-14634-serve-host-config-example). Filed unassigned for triage. Deliberately NOT fixed by that card's PR — see "Why not swept there" below.

The class

A source comment that names a repository path is a checkable claim. #14634 is the instance where such a claim was false and cost real work: two independent readers took apps/objectos for a live in-repo case, and the dev seat sent to measure it had to discover the app was absent before it could start.

That card's triage ruled its scope to three sites in packages/cli/src/commands/serve.ts. The sweep done while implementing it found seven more sites of the same class, in two groups.

Evidence (re-checkable at origin/main)

git ls-tree origin/main -- apps/ # -> exactly one entry: apps/docs
git grep -n "apps/objectos\|apps/cloud" -- packages/

The positive control matters here because the claim is a negative: apps/ is not empty and the query is not broken — it returns apps/docs and nothing else.

Both apps are real, and both live elsewhere. CHANGELOG.md:

apps/cloud — deleted from this repo. The reference cloud host now lives in objectstack-ai/cloud/apps/cloud.
apps/objectos — deleted from this repo. The tenant runtime (serving *.objectos.app) now lives in objectstack-ai/cloud/apps/objectos.

ROADMAP.md line 41 says the same: "apps/cloud, apps/objectos, apps/studio, and service-tenant no longer exist in this repo."

Group A — apps/objectos outside the domain:cli lane (3 sites)

  • packages/adapters/hono/src/index.ts:164 — "preflight can still succeed via apps/objectos's short-circuit". Present tense, unmarked.
  • packages/plugins/plugin-hono-server/src/pattern-matcher.ts:15 — "the Vercel serverless entrypoint's preflight short-circuit in apps/objectos". Present tense, unmarked.
  • packages/cloud-connection/src/cloud-connection-plugin.ts:19 and :21 — "these routes started as app-level wiring in apps/objectos/cloud-runtime-plugins.ts" and "both deployment shapes — apps/objectos (multi-tenant) and apps/objectos-ee (single-environment)". The first is history and the second is present tense; neither says the apps are out of this repo.

Group B — apps/cloud, inside serve.ts itself (4 sites)

  • :133 — "Env knobs (also documented in apps/cloud/server/observability.ts — keep the two in sync if you tweak names)". This one is not merely stale prose: it is a live cross-repo sync obligation pointed at a file no one in this repo can open.
  • :4066 — "this is the control-plane host path (apps/cloud ships no Studio and MUST boot clean, cloud#107)"
  • :4400 — "lets a host (e.g. apps/cloud) opt out of the Console entirely"
  • :4549 — "the caller (e.g. apps/cloud/scripts/migrate.ts)"

The trap next to all of this

Do not sweep the token objectos, and do not sweep cloud. Almost every occurrence is correct and a blind find-and-replace breaks working code:

  • objectos.ai / cloud.objectos.ai — the real product domain, DEFAULT_CLOUD_URL, the root-domain guard, admin@objectos.ai as the dev seed address;
  • objectos-ee, objectos-runtime, objectos-environment, objectos-stack — real cloud-side package and plugin names, several matched as literal plugin ids in serve.ts.

Grep for the pathsapps/objectos and apps/cloud, never for the tokens.

Sites that are already correct — leave them alone

These name the same paths and are not defects, which is why the fix cannot be mechanical:

  • packages/services/service-cluster/src/multi-node-gate-mount.ts:9 — says "(apps/objectos-ee/objectstack.config.ts, cloud repo)". This is the house style worth copying.
  • packages/cli/test/serve-organizations-host-resolution.e2e.test.ts:88 — "Measured on cloud'sapps/objectos-ee".
  • content/docs/getting-started/examples.mdx:40 — "The framework repo no longer contains a separate apps/objectos production host."
  • ROADMAP.md:7, :41 — explicitly say these no longer exist here.
  • CHANGELOG.md, the per-package CHANGELOG.md files, docs/adr/0004-*, docs/adr/0006-* — historical records, accurate as of when they were written. ⛔ Never rewrite these.

Why not swept in #14634's PR

Three reasons, in order of weight:

  1. Group B :133 is a decision, not a rename. "Keep the two in sync" is an obligation with a counterparty in another repo. Whether that obligation still stands — and whether the observability env knobs are still mirrored in objectstack-ai/cloud at all — cannot be read from this repo. Renaming the path while leaving the instruction would preserve a sync duty nobody can discharge; deleting the instruction would silently drop one that may still be real. Someone has to look at the cloud repo.
  2. Group A is three other lanes.domain:cli does not own packages/adapters/hono, packages/plugins/plugin-hono-server or packages/cloud-connection, and editing them widens that card's verification face from one package to four.
  3. [finding] serve.ts names apps/objectos as the host-config example, but that app does not exist in this repo — two readers took it as a real in-repo case #14634's triage explicitly ruled its scope to the three serve.tsapps/objectos sites.

Suggested disposition

Per site, and per what is actually true of it — the same split #14634 used:

  • Where the referent is genuinely the out-of-repo app (all of Group A, and :4066 / :4400 / :4549), mark it out-of-repo in the multi-node-gate-mount.ts house style rather than renaming it. The reader who wants it can then find it.
  • Where the comment is a worked example of a branch that keys on a shape, state the shape and name no app.
  • :133 needs the cloud-repo question answered first; it may deserve its own card.

⛔ Do not add an apps/objectos or an apps/cloud to this repo to satisfy any comment.

Refs: #14634 (the card whose sweep surfaced this).

Generated by Claude Code

Activity

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

Metadata

Metadata

Assignees

No one assigned

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

      [finding] Seven more source comments name deleted in-repo app paths (apps/objectos, apps/cloud) as live — same class as #14634, outside its ruled scope #14806

      Description

      @os-trump

      Found while implementing #14634 (dev seat, session session_016yfqQh2dBgPAymYd7xipza, branch claude/issue-14634-serve-host-config-example). Filed unassigned for triage. Deliberately NOT fixed by that card's PR — see "Why not swept there" below.

      The class

      A source comment that names a repository path is a checkable claim. #14634 is the instance where such a claim was false and cost real work: two independent readers took apps/objectos for a live in-repo case, and the dev seat sent to measure it had to discover the app was absent before it could start.

      That card's triage ruled its scope to three sites in packages/cli/src/commands/serve.ts. The sweep done while implementing it found seven more sites of the same class, in two groups.

      Evidence (re-checkable at origin/main)

      git ls-tree origin/main -- apps/ # -> exactly one entry: apps/docs
      git grep -n "apps/objectos\|apps/cloud" -- packages/
      

      The positive control matters here because the claim is a negative: apps/ is not empty and the query is not broken — it returns apps/docs and nothing else.

      Both apps are real, and both live elsewhere. CHANGELOG.md:

      apps/cloud — deleted from this repo. The reference cloud host now lives in objectstack-ai/cloud/apps/cloud.
      apps/objectos — deleted from this repo. The tenant runtime (serving *.objectos.app) now lives in objectstack-ai/cloud/apps/objectos.

      ROADMAP.md line 41 says the same: "apps/cloud, apps/objectos, apps/studio, and service-tenant no longer exist in this repo."

      Group A — apps/objectos outside the domain:cli lane (3 sites)

      • packages/adapters/hono/src/index.ts:164 — "preflight can still succeed via apps/objectos's short-circuit". Present tense, unmarked.
      • packages/plugins/plugin-hono-server/src/pattern-matcher.ts:15 — "the Vercel serverless entrypoint's preflight short-circuit in apps/objectos". Present tense, unmarked.
      • packages/cloud-connection/src/cloud-connection-plugin.ts:19 and :21 — "these routes started as app-level wiring in apps/objectos/cloud-runtime-plugins.ts" and "both deployment shapes — apps/objectos (multi-tenant) and apps/objectos-ee (single-environment)". The first is history and the second is present tense; neither says the apps are out of this repo.

      Group B — apps/cloud, inside serve.ts itself (4 sites)

      • :133 — "Env knobs (also documented in apps/cloud/server/observability.ts — keep the two in sync if you tweak names)". This one is not merely stale prose: it is a live cross-repo sync obligation pointed at a file no one in this repo can open.
      • :4066 — "this is the control-plane host path (apps/cloud ships no Studio and MUST boot clean, cloud#107)"
      • :4400 — "lets a host (e.g. apps/cloud) opt out of the Console entirely"
      • :4549 — "the caller (e.g. apps/cloud/scripts/migrate.ts)"

      The trap next to all of this

      Do not sweep the token objectos, and do not sweep cloud. Almost every occurrence is correct and a blind find-and-replace breaks working code:

      • objectos.ai / cloud.objectos.ai — the real product domain, DEFAULT_CLOUD_URL, the root-domain guard, admin@objectos.ai as the dev seed address;
      • objectos-ee, objectos-runtime, objectos-environment, objectos-stack — real cloud-side package and plugin names, several matched as literal plugin ids in serve.ts.

      Grep for the pathsapps/objectos and apps/cloud, never for the tokens.

      Sites that are already correct — leave them alone

      These name the same paths and are not defects, which is why the fix cannot be mechanical:

      • packages/services/service-cluster/src/multi-node-gate-mount.ts:9 — says "(apps/objectos-ee/objectstack.config.ts, cloud repo)". This is the house style worth copying.
      • packages/cli/test/serve-organizations-host-resolution.e2e.test.ts:88 — "Measured on cloud'sapps/objectos-ee".
      • content/docs/getting-started/examples.mdx:40 — "The framework repo no longer contains a separate apps/objectos production host."
      • ROADMAP.md:7, :41 — explicitly say these no longer exist here.
      • CHANGELOG.md, the per-package CHANGELOG.md files, docs/adr/0004-*, docs/adr/0006-* — historical records, accurate as of when they were written. ⛔ Never rewrite these.

      Why not swept in #14634's PR

      Three reasons, in order of weight:

      1. Group B :133 is a decision, not a rename. "Keep the two in sync" is an obligation with a counterparty in another repo. Whether that obligation still stands — and whether the observability env knobs are still mirrored in objectstack-ai/cloud at all — cannot be read from this repo. Renaming the path while leaving the instruction would preserve a sync duty nobody can discharge; deleting the instruction would silently drop one that may still be real. Someone has to look at the cloud repo.
      2. Group A is three other lanes.domain:cli does not own packages/adapters/hono, packages/plugins/plugin-hono-server or packages/cloud-connection, and editing them widens that card's verification face from one package to four.
      3. [finding] serve.ts names apps/objectos as the host-config example, but that app does not exist in this repo — two readers took it as a real in-repo case #14634's triage explicitly ruled its scope to the three serve.tsapps/objectos sites.

      Suggested disposition

      Per site, and per what is actually true of it — the same split #14634 used:

      • Where the referent is genuinely the out-of-repo app (all of Group A, and :4066 / :4400 / :4549), mark it out-of-repo in the multi-node-gate-mount.ts house style rather than renaming it. The reader who wants it can then find it.
      • Where the comment is a worked example of a branch that keys on a shape, state the shape and name no app.
      • :133 needs the cloud-repo question answered first; it may deserve its own card.

      ⛔ Do not add an apps/objectos or an apps/cloud to this repo to satisfy any comment.

      Refs: #14634 (the card whose sweep surfaced this).

      Generated by Claude Code

      Activity

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

      Metadata

      Metadata

      Assignees

      No one assigned

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

          [finding] Seven more source comments name deleted in-repo app paths (apps/objectos, apps/cloud) as live — same class as #14634, outside its ruled scope #14806

          Description

          @os-trump

          Found while implementing #14634 (dev seat, session session_016yfqQh2dBgPAymYd7xipza, branch claude/issue-14634-serve-host-config-example). Filed unassigned for triage. Deliberately NOT fixed by that card's PR — see "Why not swept there" below.

          The class

          A source comment that names a repository path is a checkable claim. #14634 is the instance where such a claim was false and cost real work: two independent readers took apps/objectos for a live in-repo case, and the dev seat sent to measure it had to discover the app was absent before it could start.

          That card's triage ruled its scope to three sites in packages/cli/src/commands/serve.ts. The sweep done while implementing it found seven more sites of the same class, in two groups.

          Evidence (re-checkable at origin/main)

          git ls-tree origin/main -- apps/ # -> exactly one entry: apps/docs
          git grep -n "apps/objectos\|apps/cloud" -- packages/
          

          The positive control matters here because the claim is a negative: apps/ is not empty and the query is not broken — it returns apps/docs and nothing else.

          Both apps are real, and both live elsewhere. CHANGELOG.md:

          apps/cloud — deleted from this repo. The reference cloud host now lives in objectstack-ai/cloud/apps/cloud.
          apps/objectos — deleted from this repo. The tenant runtime (serving *.objectos.app) now lives in objectstack-ai/cloud/apps/objectos.

          ROADMAP.md line 41 says the same: "apps/cloud, apps/objectos, apps/studio, and service-tenant no longer exist in this repo."

          Group A — apps/objectos outside the domain:cli lane (3 sites)

          • packages/adapters/hono/src/index.ts:164 — "preflight can still succeed via apps/objectos's short-circuit". Present tense, unmarked.
          • packages/plugins/plugin-hono-server/src/pattern-matcher.ts:15 — "the Vercel serverless entrypoint's preflight short-circuit in apps/objectos". Present tense, unmarked.
          • packages/cloud-connection/src/cloud-connection-plugin.ts:19 and :21 — "these routes started as app-level wiring in apps/objectos/cloud-runtime-plugins.ts" and "both deployment shapes — apps/objectos (multi-tenant) and apps/objectos-ee (single-environment)". The first is history and the second is present tense; neither says the apps are out of this repo.

          Group B — apps/cloud, inside serve.ts itself (4 sites)

          • :133 — "Env knobs (also documented in apps/cloud/server/observability.ts — keep the two in sync if you tweak names)". This one is not merely stale prose: it is a live cross-repo sync obligation pointed at a file no one in this repo can open.
          • :4066 — "this is the control-plane host path (apps/cloud ships no Studio and MUST boot clean, cloud#107)"
          • :4400 — "lets a host (e.g. apps/cloud) opt out of the Console entirely"
          • :4549 — "the caller (e.g. apps/cloud/scripts/migrate.ts)"

          The trap next to all of this

          Do not sweep the token objectos, and do not sweep cloud. Almost every occurrence is correct and a blind find-and-replace breaks working code:

          • objectos.ai / cloud.objectos.ai — the real product domain, DEFAULT_CLOUD_URL, the root-domain guard, admin@objectos.ai as the dev seed address;
          • objectos-ee, objectos-runtime, objectos-environment, objectos-stack — real cloud-side package and plugin names, several matched as literal plugin ids in serve.ts.

          Grep for the pathsapps/objectos and apps/cloud, never for the tokens.

          Sites that are already correct — leave them alone

          These name the same paths and are not defects, which is why the fix cannot be mechanical:

          • packages/services/service-cluster/src/multi-node-gate-mount.ts:9 — says "(apps/objectos-ee/objectstack.config.ts, cloud repo)". This is the house style worth copying.
          • packages/cli/test/serve-organizations-host-resolution.e2e.test.ts:88 — "Measured on cloud'sapps/objectos-ee".
          • content/docs/getting-started/examples.mdx:40 — "The framework repo no longer contains a separate apps/objectos production host."
          • ROADMAP.md:7, :41 — explicitly say these no longer exist here.
          • CHANGELOG.md, the per-package CHANGELOG.md files, docs/adr/0004-*, docs/adr/0006-* — historical records, accurate as of when they were written. ⛔ Never rewrite these.

          Why not swept in #14634's PR

          Three reasons, in order of weight:

          1. Group B :133 is a decision, not a rename. "Keep the two in sync" is an obligation with a counterparty in another repo. Whether that obligation still stands — and whether the observability env knobs are still mirrored in objectstack-ai/cloud at all — cannot be read from this repo. Renaming the path while leaving the instruction would preserve a sync duty nobody can discharge; deleting the instruction would silently drop one that may still be real. Someone has to look at the cloud repo.
          2. Group A is three other lanes.domain:cli does not own packages/adapters/hono, packages/plugins/plugin-hono-server or packages/cloud-connection, and editing them widens that card's verification face from one package to four.
          3. [finding] serve.ts names apps/objectos as the host-config example, but that app does not exist in this repo — two readers took it as a real in-repo case #14634's triage explicitly ruled its scope to the three serve.tsapps/objectos sites.

          Suggested disposition

          Per site, and per what is actually true of it — the same split #14634 used:

          • Where the referent is genuinely the out-of-repo app (all of Group A, and :4066 / :4400 / :4549), mark it out-of-repo in the multi-node-gate-mount.ts house style rather than renaming it. The reader who wants it can then find it.
          • Where the comment is a worked example of a branch that keys on a shape, state the shape and name no app.
          • :133 needs the cloud-repo question answered first; it may deserve its own card.

          ⛔ Do not add an apps/objectos or an apps/cloud to this repo to satisfy any comment.

          Refs: #14634 (the card whose sweep surfaced this).

          Generated by Claude Code

          Activity

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

          Metadata

          Metadata

          Assignees

          No one assigned

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

              [finding] Seven more source comments name deleted in-repo app paths (apps/objectos, apps/cloud) as live — same class as #14634, outside its ruled scope #14806

              Description

              @os-trump

              Found while implementing #14634 (dev seat, session session_016yfqQh2dBgPAymYd7xipza, branch claude/issue-14634-serve-host-config-example). Filed unassigned for triage. Deliberately NOT fixed by that card's PR — see "Why not swept there" below.

              The class

              A source comment that names a repository path is a checkable claim. #14634 is the instance where such a claim was false and cost real work: two independent readers took apps/objectos for a live in-repo case, and the dev seat sent to measure it had to discover the app was absent before it could start.

              That card's triage ruled its scope to three sites in packages/cli/src/commands/serve.ts. The sweep done while implementing it found seven more sites of the same class, in two groups.

              Evidence (re-checkable at origin/main)

              git ls-tree origin/main -- apps/ # -> exactly one entry: apps/docs
              git grep -n "apps/objectos\|apps/cloud" -- packages/
              

              The positive control matters here because the claim is a negative: apps/ is not empty and the query is not broken — it returns apps/docs and nothing else.

              Both apps are real, and both live elsewhere. CHANGELOG.md:

              apps/cloud — deleted from this repo. The reference cloud host now lives in objectstack-ai/cloud/apps/cloud.
              apps/objectos — deleted from this repo. The tenant runtime (serving *.objectos.app) now lives in objectstack-ai/cloud/apps/objectos.

              ROADMAP.md line 41 says the same: "apps/cloud, apps/objectos, apps/studio, and service-tenant no longer exist in this repo."

              Group A — apps/objectos outside the domain:cli lane (3 sites)

              • packages/adapters/hono/src/index.ts:164 — "preflight can still succeed via apps/objectos's short-circuit". Present tense, unmarked.
              • packages/plugins/plugin-hono-server/src/pattern-matcher.ts:15 — "the Vercel serverless entrypoint's preflight short-circuit in apps/objectos". Present tense, unmarked.
              • packages/cloud-connection/src/cloud-connection-plugin.ts:19 and :21 — "these routes started as app-level wiring in apps/objectos/cloud-runtime-plugins.ts" and "both deployment shapes — apps/objectos (multi-tenant) and apps/objectos-ee (single-environment)". The first is history and the second is present tense; neither says the apps are out of this repo.

              Group B — apps/cloud, inside serve.ts itself (4 sites)

              • :133 — "Env knobs (also documented in apps/cloud/server/observability.ts — keep the two in sync if you tweak names)". This one is not merely stale prose: it is a live cross-repo sync obligation pointed at a file no one in this repo can open.
              • :4066 — "this is the control-plane host path (apps/cloud ships no Studio and MUST boot clean, cloud#107)"
              • :4400 — "lets a host (e.g. apps/cloud) opt out of the Console entirely"
              • :4549 — "the caller (e.g. apps/cloud/scripts/migrate.ts)"

              The trap next to all of this

              Do not sweep the token objectos, and do not sweep cloud. Almost every occurrence is correct and a blind find-and-replace breaks working code:

              • objectos.ai / cloud.objectos.ai — the real product domain, DEFAULT_CLOUD_URL, the root-domain guard, admin@objectos.ai as the dev seed address;
              • objectos-ee, objectos-runtime, objectos-environment, objectos-stack — real cloud-side package and plugin names, several matched as literal plugin ids in serve.ts.

              Grep for the pathsapps/objectos and apps/cloud, never for the tokens.

              Sites that are already correct — leave them alone

              These name the same paths and are not defects, which is why the fix cannot be mechanical:

              • packages/services/service-cluster/src/multi-node-gate-mount.ts:9 — says "(apps/objectos-ee/objectstack.config.ts, cloud repo)". This is the house style worth copying.
              • packages/cli/test/serve-organizations-host-resolution.e2e.test.ts:88 — "Measured on cloud'sapps/objectos-ee".
              • content/docs/getting-started/examples.mdx:40 — "The framework repo no longer contains a separate apps/objectos production host."
              • ROADMAP.md:7, :41 — explicitly say these no longer exist here.
              • CHANGELOG.md, the per-package CHANGELOG.md files, docs/adr/0004-*, docs/adr/0006-* — historical records, accurate as of when they were written. ⛔ Never rewrite these.

              Why not swept in #14634's PR

              Three reasons, in order of weight:

              1. Group B :133 is a decision, not a rename. "Keep the two in sync" is an obligation with a counterparty in another repo. Whether that obligation still stands — and whether the observability env knobs are still mirrored in objectstack-ai/cloud at all — cannot be read from this repo. Renaming the path while leaving the instruction would preserve a sync duty nobody can discharge; deleting the instruction would silently drop one that may still be real. Someone has to look at the cloud repo.
              2. Group A is three other lanes.domain:cli does not own packages/adapters/hono, packages/plugins/plugin-hono-server or packages/cloud-connection, and editing them widens that card's verification face from one package to four.
              3. [finding] serve.ts names apps/objectos as the host-config example, but that app does not exist in this repo — two readers took it as a real in-repo case #14634's triage explicitly ruled its scope to the three serve.tsapps/objectos sites.

              Suggested disposition

              Per site, and per what is actually true of it — the same split #14634 used:

              • Where the referent is genuinely the out-of-repo app (all of Group A, and :4066 / :4400 / :4549), mark it out-of-repo in the multi-node-gate-mount.ts house style rather than renaming it. The reader who wants it can then find it.
              • Where the comment is a worked example of a branch that keys on a shape, state the shape and name no app.
              • :133 needs the cloud-repo question answered first; it may deserve its own card.

              ⛔ Do not add an apps/objectos or an apps/cloud to this repo to satisfy any comment.

              Refs: #14634 (the card whose sweep surfaced this).

              Generated by Claude Code

              Activity

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

              Metadata

              Metadata

              Assignees

              No one assigned

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

                  [finding] Seven more source comments name deleted in-repo app paths (apps/objectos, apps/cloud) as live — same class as #14634, outside its ruled scope #14806

                  Description

                  @os-trump

                  Found while implementing #14634 (dev seat, session session_016yfqQh2dBgPAymYd7xipza, branch claude/issue-14634-serve-host-config-example). Filed unassigned for triage. Deliberately NOT fixed by that card's PR — see "Why not swept there" below.

                  The class

                  A source comment that names a repository path is a checkable claim. #14634 is the instance where such a claim was false and cost real work: two independent readers took apps/objectos for a live in-repo case, and the dev seat sent to measure it had to discover the app was absent before it could start.

                  That card's triage ruled its scope to three sites in packages/cli/src/commands/serve.ts. The sweep done while implementing it found seven more sites of the same class, in two groups.

                  Evidence (re-checkable at origin/main)

                  git ls-tree origin/main -- apps/ # -> exactly one entry: apps/docs
                  git grep -n "apps/objectos\|apps/cloud" -- packages/
                  

                  The positive control matters here because the claim is a negative: apps/ is not empty and the query is not broken — it returns apps/docs and nothing else.

                  Both apps are real, and both live elsewhere. CHANGELOG.md:

                  apps/cloud — deleted from this repo. The reference cloud host now lives in objectstack-ai/cloud/apps/cloud.
                  apps/objectos — deleted from this repo. The tenant runtime (serving *.objectos.app) now lives in objectstack-ai/cloud/apps/objectos.

                  ROADMAP.md line 41 says the same: "apps/cloud, apps/objectos, apps/studio, and service-tenant no longer exist in this repo."

                  Group A — apps/objectos outside the domain:cli lane (3 sites)

                  • packages/adapters/hono/src/index.ts:164 — "preflight can still succeed via apps/objectos's short-circuit". Present tense, unmarked.
                  • packages/plugins/plugin-hono-server/src/pattern-matcher.ts:15 — "the Vercel serverless entrypoint's preflight short-circuit in apps/objectos". Present tense, unmarked.
                  • packages/cloud-connection/src/cloud-connection-plugin.ts:19 and :21 — "these routes started as app-level wiring in apps/objectos/cloud-runtime-plugins.ts" and "both deployment shapes — apps/objectos (multi-tenant) and apps/objectos-ee (single-environment)". The first is history and the second is present tense; neither says the apps are out of this repo.

                  Group B — apps/cloud, inside serve.ts itself (4 sites)

                  • :133 — "Env knobs (also documented in apps/cloud/server/observability.ts — keep the two in sync if you tweak names)". This one is not merely stale prose: it is a live cross-repo sync obligation pointed at a file no one in this repo can open.
                  • :4066 — "this is the control-plane host path (apps/cloud ships no Studio and MUST boot clean, cloud#107)"
                  • :4400 — "lets a host (e.g. apps/cloud) opt out of the Console entirely"
                  • :4549 — "the caller (e.g. apps/cloud/scripts/migrate.ts)"

                  The trap next to all of this

                  Do not sweep the token objectos, and do not sweep cloud. Almost every occurrence is correct and a blind find-and-replace breaks working code:

                  • objectos.ai / cloud.objectos.ai — the real product domain, DEFAULT_CLOUD_URL, the root-domain guard, admin@objectos.ai as the dev seed address;
                  • objectos-ee, objectos-runtime, objectos-environment, objectos-stack — real cloud-side package and plugin names, several matched as literal plugin ids in serve.ts.

                  Grep for the pathsapps/objectos and apps/cloud, never for the tokens.

                  Sites that are already correct — leave them alone

                  These name the same paths and are not defects, which is why the fix cannot be mechanical:

                  • packages/services/service-cluster/src/multi-node-gate-mount.ts:9 — says "(apps/objectos-ee/objectstack.config.ts, cloud repo)". This is the house style worth copying.
                  • packages/cli/test/serve-organizations-host-resolution.e2e.test.ts:88 — "Measured on cloud'sapps/objectos-ee".
                  • content/docs/getting-started/examples.mdx:40 — "The framework repo no longer contains a separate apps/objectos production host."
                  • ROADMAP.md:7, :41 — explicitly say these no longer exist here.
                  • CHANGELOG.md, the per-package CHANGELOG.md files, docs/adr/0004-*, docs/adr/0006-* — historical records, accurate as of when they were written. ⛔ Never rewrite these.

                  Why not swept in #14634's PR

                  Three reasons, in order of weight:

                  1. Group B :133 is a decision, not a rename. "Keep the two in sync" is an obligation with a counterparty in another repo. Whether that obligation still stands — and whether the observability env knobs are still mirrored in objectstack-ai/cloud at all — cannot be read from this repo. Renaming the path while leaving the instruction would preserve a sync duty nobody can discharge; deleting the instruction would silently drop one that may still be real. Someone has to look at the cloud repo.
                  2. Group A is three other lanes.domain:cli does not own packages/adapters/hono, packages/plugins/plugin-hono-server or packages/cloud-connection, and editing them widens that card's verification face from one package to four.
                  3. [finding] serve.ts names apps/objectos as the host-config example, but that app does not exist in this repo — two readers took it as a real in-repo case #14634's triage explicitly ruled its scope to the three serve.tsapps/objectos sites.

                  Suggested disposition

                  Per site, and per what is actually true of it — the same split #14634 used:

                  • Where the referent is genuinely the out-of-repo app (all of Group A, and :4066 / :4400 / :4549), mark it out-of-repo in the multi-node-gate-mount.ts house style rather than renaming it. The reader who wants it can then find it.
                  • Where the comment is a worked example of a branch that keys on a shape, state the shape and name no app.
                  • :133 needs the cloud-repo question answered first; it may deserve its own card.

                  ⛔ Do not add an apps/objectos or an apps/cloud to this repo to satisfy any comment.

                  Refs: #14634 (the card whose sweep surfaced this).

                  Generated by Claude Code

                  Activity

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

                  Metadata

                  Metadata

                  Assignees

                  No one assigned

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

                      [finding] Seven more source comments name deleted in-repo app paths (apps/objectos, apps/cloud) as live — same class as #14634, outside its ruled scope #14806

                      Description

                      @os-trump

                      Found while implementing #14634 (dev seat, session session_016yfqQh2dBgPAymYd7xipza, branch claude/issue-14634-serve-host-config-example). Filed unassigned for triage. Deliberately NOT fixed by that card's PR — see "Why not swept there" below.

                      The class

                      A source comment that names a repository path is a checkable claim. #14634 is the instance where such a claim was false and cost real work: two independent readers took apps/objectos for a live in-repo case, and the dev seat sent to measure it had to discover the app was absent before it could start.

                      That card's triage ruled its scope to three sites in packages/cli/src/commands/serve.ts. The sweep done while implementing it found seven more sites of the same class, in two groups.

                      Evidence (re-checkable at origin/main)

                      git ls-tree origin/main -- apps/ # -> exactly one entry: apps/docs
                      git grep -n "apps/objectos\|apps/cloud" -- packages/
                      

                      The positive control matters here because the claim is a negative: apps/ is not empty and the query is not broken — it returns apps/docs and nothing else.

                      Both apps are real, and both live elsewhere. CHANGELOG.md:

                      apps/cloud — deleted from this repo. The reference cloud host now lives in objectstack-ai/cloud/apps/cloud.
                      apps/objectos — deleted from this repo. The tenant runtime (serving *.objectos.app) now lives in objectstack-ai/cloud/apps/objectos.

                      ROADMAP.md line 41 says the same: "apps/cloud, apps/objectos, apps/studio, and service-tenant no longer exist in this repo."

                      Group A — apps/objectos outside the domain:cli lane (3 sites)

                      • packages/adapters/hono/src/index.ts:164 — "preflight can still succeed via apps/objectos's short-circuit". Present tense, unmarked.
                      • packages/plugins/plugin-hono-server/src/pattern-matcher.ts:15 — "the Vercel serverless entrypoint's preflight short-circuit in apps/objectos". Present tense, unmarked.
                      • packages/cloud-connection/src/cloud-connection-plugin.ts:19 and :21 — "these routes started as app-level wiring in apps/objectos/cloud-runtime-plugins.ts" and "both deployment shapes — apps/objectos (multi-tenant) and apps/objectos-ee (single-environment)". The first is history and the second is present tense; neither says the apps are out of this repo.

                      Group B — apps/cloud, inside serve.ts itself (4 sites)

                      • :133 — "Env knobs (also documented in apps/cloud/server/observability.ts — keep the two in sync if you tweak names)". This one is not merely stale prose: it is a live cross-repo sync obligation pointed at a file no one in this repo can open.
                      • :4066 — "this is the control-plane host path (apps/cloud ships no Studio and MUST boot clean, cloud#107)"
                      • :4400 — "lets a host (e.g. apps/cloud) opt out of the Console entirely"
                      • :4549 — "the caller (e.g. apps/cloud/scripts/migrate.ts)"

                      The trap next to all of this

                      Do not sweep the token objectos, and do not sweep cloud. Almost every occurrence is correct and a blind find-and-replace breaks working code:

                      • objectos.ai / cloud.objectos.ai — the real product domain, DEFAULT_CLOUD_URL, the root-domain guard, admin@objectos.ai as the dev seed address;
                      • objectos-ee, objectos-runtime, objectos-environment, objectos-stack — real cloud-side package and plugin names, several matched as literal plugin ids in serve.ts.

                      Grep for the pathsapps/objectos and apps/cloud, never for the tokens.

                      Sites that are already correct — leave them alone

                      These name the same paths and are not defects, which is why the fix cannot be mechanical:

                      • packages/services/service-cluster/src/multi-node-gate-mount.ts:9 — says "(apps/objectos-ee/objectstack.config.ts, cloud repo)". This is the house style worth copying.
                      • packages/cli/test/serve-organizations-host-resolution.e2e.test.ts:88 — "Measured on cloud'sapps/objectos-ee".
                      • content/docs/getting-started/examples.mdx:40 — "The framework repo no longer contains a separate apps/objectos production host."
                      • ROADMAP.md:7, :41 — explicitly say these no longer exist here.
                      • CHANGELOG.md, the per-package CHANGELOG.md files, docs/adr/0004-*, docs/adr/0006-* — historical records, accurate as of when they were written. ⛔ Never rewrite these.

                      Why not swept in #14634's PR

                      Three reasons, in order of weight:

                      1. Group B :133 is a decision, not a rename. "Keep the two in sync" is an obligation with a counterparty in another repo. Whether that obligation still stands — and whether the observability env knobs are still mirrored in objectstack-ai/cloud at all — cannot be read from this repo. Renaming the path while leaving the instruction would preserve a sync duty nobody can discharge; deleting the instruction would silently drop one that may still be real. Someone has to look at the cloud repo.
                      2. Group A is three other lanes.domain:cli does not own packages/adapters/hono, packages/plugins/plugin-hono-server or packages/cloud-connection, and editing them widens that card's verification face from one package to four.
                      3. [finding] serve.ts names apps/objectos as the host-config example, but that app does not exist in this repo — two readers took it as a real in-repo case #14634's triage explicitly ruled its scope to the three serve.tsapps/objectos sites.

                      Suggested disposition

                      Per site, and per what is actually true of it — the same split #14634 used:

                      • Where the referent is genuinely the out-of-repo app (all of Group A, and :4066 / :4400 / :4549), mark it out-of-repo in the multi-node-gate-mount.ts house style rather than renaming it. The reader who wants it can then find it.
                      • Where the comment is a worked example of a branch that keys on a shape, state the shape and name no app.
                      • :133 needs the cloud-repo question answered first; it may deserve its own card.

                      ⛔ Do not add an apps/objectos or an apps/cloud to this repo to satisfy any comment.

                      Refs: #14634 (the card whose sweep surfaced this).

                      Generated by Claude Code

                      Activity

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

                      Metadata

                      Metadata

                      Assignees

                      No one assigned

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

                          [finding] Seven more source comments name deleted in-repo app paths (apps/objectos, apps/cloud) as live — same class as #14634, outside its ruled scope #14806

                          Description

                          @os-trump

                          Found while implementing #14634 (dev seat, session session_016yfqQh2dBgPAymYd7xipza, branch claude/issue-14634-serve-host-config-example). Filed unassigned for triage. Deliberately NOT fixed by that card's PR — see "Why not swept there" below.

                          The class

                          A source comment that names a repository path is a checkable claim. #14634 is the instance where such a claim was false and cost real work: two independent readers took apps/objectos for a live in-repo case, and the dev seat sent to measure it had to discover the app was absent before it could start.

                          That card's triage ruled its scope to three sites in packages/cli/src/commands/serve.ts. The sweep done while implementing it found seven more sites of the same class, in two groups.

                          Evidence (re-checkable at origin/main)

                          git ls-tree origin/main -- apps/ # -> exactly one entry: apps/docs
                          git grep -n "apps/objectos\|apps/cloud" -- packages/
                          

                          The positive control matters here because the claim is a negative: apps/ is not empty and the query is not broken — it returns apps/docs and nothing else.

                          Both apps are real, and both live elsewhere. CHANGELOG.md:

                          apps/cloud — deleted from this repo. The reference cloud host now lives in objectstack-ai/cloud/apps/cloud.
                          apps/objectos — deleted from this repo. The tenant runtime (serving *.objectos.app) now lives in objectstack-ai/cloud/apps/objectos.

                          ROADMAP.md line 41 says the same: "apps/cloud, apps/objectos, apps/studio, and service-tenant no longer exist in this repo."

                          Group A — apps/objectos outside the domain:cli lane (3 sites)

                          • packages/adapters/hono/src/index.ts:164 — "preflight can still succeed via apps/objectos's short-circuit". Present tense, unmarked.
                          • packages/plugins/plugin-hono-server/src/pattern-matcher.ts:15 — "the Vercel serverless entrypoint's preflight short-circuit in apps/objectos". Present tense, unmarked.
                          • packages/cloud-connection/src/cloud-connection-plugin.ts:19 and :21 — "these routes started as app-level wiring in apps/objectos/cloud-runtime-plugins.ts" and "both deployment shapes — apps/objectos (multi-tenant) and apps/objectos-ee (single-environment)". The first is history and the second is present tense; neither says the apps are out of this repo.

                          Group B — apps/cloud, inside serve.ts itself (4 sites)

                          • :133 — "Env knobs (also documented in apps/cloud/server/observability.ts — keep the two in sync if you tweak names)". This one is not merely stale prose: it is a live cross-repo sync obligation pointed at a file no one in this repo can open.
                          • :4066 — "this is the control-plane host path (apps/cloud ships no Studio and MUST boot clean, cloud#107)"
                          • :4400 — "lets a host (e.g. apps/cloud) opt out of the Console entirely"
                          • :4549 — "the caller (e.g. apps/cloud/scripts/migrate.ts)"

                          The trap next to all of this

                          Do not sweep the token objectos, and do not sweep cloud. Almost every occurrence is correct and a blind find-and-replace breaks working code:

                          • objectos.ai / cloud.objectos.ai — the real product domain, DEFAULT_CLOUD_URL, the root-domain guard, admin@objectos.ai as the dev seed address;
                          • objectos-ee, objectos-runtime, objectos-environment, objectos-stack — real cloud-side package and plugin names, several matched as literal plugin ids in serve.ts.

                          Grep for the pathsapps/objectos and apps/cloud, never for the tokens.

                          Sites that are already correct — leave them alone

                          These name the same paths and are not defects, which is why the fix cannot be mechanical:

                          • packages/services/service-cluster/src/multi-node-gate-mount.ts:9 — says "(apps/objectos-ee/objectstack.config.ts, cloud repo)". This is the house style worth copying.
                          • packages/cli/test/serve-organizations-host-resolution.e2e.test.ts:88 — "Measured on cloud'sapps/objectos-ee".
                          • content/docs/getting-started/examples.mdx:40 — "The framework repo no longer contains a separate apps/objectos production host."
                          • ROADMAP.md:7, :41 — explicitly say these no longer exist here.
                          • CHANGELOG.md, the per-package CHANGELOG.md files, docs/adr/0004-*, docs/adr/0006-* — historical records, accurate as of when they were written. ⛔ Never rewrite these.

                          Why not swept in #14634's PR

                          Three reasons, in order of weight:

                          1. Group B :133 is a decision, not a rename. "Keep the two in sync" is an obligation with a counterparty in another repo. Whether that obligation still stands — and whether the observability env knobs are still mirrored in objectstack-ai/cloud at all — cannot be read from this repo. Renaming the path while leaving the instruction would preserve a sync duty nobody can discharge; deleting the instruction would silently drop one that may still be real. Someone has to look at the cloud repo.
                          2. Group A is three other lanes.domain:cli does not own packages/adapters/hono, packages/plugins/plugin-hono-server or packages/cloud-connection, and editing them widens that card's verification face from one package to four.
                          3. [finding] serve.ts names apps/objectos as the host-config example, but that app does not exist in this repo — two readers took it as a real in-repo case #14634's triage explicitly ruled its scope to the three serve.tsapps/objectos sites.

                          Suggested disposition

                          Per site, and per what is actually true of it — the same split #14634 used:

                          • Where the referent is genuinely the out-of-repo app (all of Group A, and :4066 / :4400 / :4549), mark it out-of-repo in the multi-node-gate-mount.ts house style rather than renaming it. The reader who wants it can then find it.
                          • Where the comment is a worked example of a branch that keys on a shape, state the shape and name no app.
                          • :133 needs the cloud-repo question answered first; it may deserve its own card.

                          ⛔ Do not add an apps/objectos or an apps/cloud to this repo to satisfy any comment.

                          Refs: #14634 (the card whose sweep surfaced this).

                          Generated by Claude Code

                          Activity

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

                          Metadata

                          Metadata

                          Assignees

                          No one assigned

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

                              [finding] Seven more source comments name deleted in-repo app paths (apps/objectos, apps/cloud) as live — same class as #14634, outside its ruled scope #14806

                              Description

                              @os-trump

                              Found while implementing #14634 (dev seat, session session_016yfqQh2dBgPAymYd7xipza, branch claude/issue-14634-serve-host-config-example). Filed unassigned for triage. Deliberately NOT fixed by that card's PR — see "Why not swept there" below.

                              The class

                              A source comment that names a repository path is a checkable claim. #14634 is the instance where such a claim was false and cost real work: two independent readers took apps/objectos for a live in-repo case, and the dev seat sent to measure it had to discover the app was absent before it could start.

                              That card's triage ruled its scope to three sites in packages/cli/src/commands/serve.ts. The sweep done while implementing it found seven more sites of the same class, in two groups.

                              Evidence (re-checkable at origin/main)

                              git ls-tree origin/main -- apps/ # -> exactly one entry: apps/docs
                              git grep -n "apps/objectos\|apps/cloud" -- packages/
                              

                              The positive control matters here because the claim is a negative: apps/ is not empty and the query is not broken — it returns apps/docs and nothing else.

                              Both apps are real, and both live elsewhere. CHANGELOG.md:

                              apps/cloud — deleted from this repo. The reference cloud host now lives in objectstack-ai/cloud/apps/cloud.
                              apps/objectos — deleted from this repo. The tenant runtime (serving *.objectos.app) now lives in objectstack-ai/cloud/apps/objectos.

                              ROADMAP.md line 41 says the same: "apps/cloud, apps/objectos, apps/studio, and service-tenant no longer exist in this repo."

                              Group A — apps/objectos outside the domain:cli lane (3 sites)

                              • packages/adapters/hono/src/index.ts:164 — "preflight can still succeed via apps/objectos's short-circuit". Present tense, unmarked.
                              • packages/plugins/plugin-hono-server/src/pattern-matcher.ts:15 — "the Vercel serverless entrypoint's preflight short-circuit in apps/objectos". Present tense, unmarked.
                              • packages/cloud-connection/src/cloud-connection-plugin.ts:19 and :21 — "these routes started as app-level wiring in apps/objectos/cloud-runtime-plugins.ts" and "both deployment shapes — apps/objectos (multi-tenant) and apps/objectos-ee (single-environment)". The first is history and the second is present tense; neither says the apps are out of this repo.

                              Group B — apps/cloud, inside serve.ts itself (4 sites)

                              • :133 — "Env knobs (also documented in apps/cloud/server/observability.ts — keep the two in sync if you tweak names)". This one is not merely stale prose: it is a live cross-repo sync obligation pointed at a file no one in this repo can open.
                              • :4066 — "this is the control-plane host path (apps/cloud ships no Studio and MUST boot clean, cloud#107)"
                              • :4400 — "lets a host (e.g. apps/cloud) opt out of the Console entirely"
                              • :4549 — "the caller (e.g. apps/cloud/scripts/migrate.ts)"

                              The trap next to all of this

                              Do not sweep the token objectos, and do not sweep cloud. Almost every occurrence is correct and a blind find-and-replace breaks working code:

                              • objectos.ai / cloud.objectos.ai — the real product domain, DEFAULT_CLOUD_URL, the root-domain guard, admin@objectos.ai as the dev seed address;
                              • objectos-ee, objectos-runtime, objectos-environment, objectos-stack — real cloud-side package and plugin names, several matched as literal plugin ids in serve.ts.

                              Grep for the pathsapps/objectos and apps/cloud, never for the tokens.

                              Sites that are already correct — leave them alone

                              These name the same paths and are not defects, which is why the fix cannot be mechanical:

                              • packages/services/service-cluster/src/multi-node-gate-mount.ts:9 — says "(apps/objectos-ee/objectstack.config.ts, cloud repo)". This is the house style worth copying.
                              • packages/cli/test/serve-organizations-host-resolution.e2e.test.ts:88 — "Measured on cloud'sapps/objectos-ee".
                              • content/docs/getting-started/examples.mdx:40 — "The framework repo no longer contains a separate apps/objectos production host."
                              • ROADMAP.md:7, :41 — explicitly say these no longer exist here.
                              • CHANGELOG.md, the per-package CHANGELOG.md files, docs/adr/0004-*, docs/adr/0006-* — historical records, accurate as of when they were written. ⛔ Never rewrite these.

                              Why not swept in #14634's PR

                              Three reasons, in order of weight:

                              1. Group B :133 is a decision, not a rename. "Keep the two in sync" is an obligation with a counterparty in another repo. Whether that obligation still stands — and whether the observability env knobs are still mirrored in objectstack-ai/cloud at all — cannot be read from this repo. Renaming the path while leaving the instruction would preserve a sync duty nobody can discharge; deleting the instruction would silently drop one that may still be real. Someone has to look at the cloud repo.
                              2. Group A is three other lanes.domain:cli does not own packages/adapters/hono, packages/plugins/plugin-hono-server or packages/cloud-connection, and editing them widens that card's verification face from one package to four.
                              3. [finding] serve.ts names apps/objectos as the host-config example, but that app does not exist in this repo — two readers took it as a real in-repo case #14634's triage explicitly ruled its scope to the three serve.tsapps/objectos sites.

                              Suggested disposition

                              Per site, and per what is actually true of it — the same split #14634 used:

                              • Where the referent is genuinely the out-of-repo app (all of Group A, and :4066 / :4400 / :4549), mark it out-of-repo in the multi-node-gate-mount.ts house style rather than renaming it. The reader who wants it can then find it.
                              • Where the comment is a worked example of a branch that keys on a shape, state the shape and name no app.
                              • :133 needs the cloud-repo question answered first; it may deserve its own card.

                              ⛔ Do not add an apps/objectos or an apps/cloud to this repo to satisfy any comment.

                              Refs: #14634 (the card whose sweep surfaced this).

                              Generated by Claude Code

                              Activity

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

                              Metadata

                              Metadata

                              Assignees

                              No one assigned

                                Type

                                No type

                                Projects

                                No projects

                                  Milestone

                                  No milestone

                                  Relationships

                                  None yet

                                  Development

                                  No branches or pull requests

                                  Issue actions