Repository navigation
docs(src): repoint the source comments that cite pre-ADR-0130 directories - #2040
Merged
objectstack-fleet[bot] merged 8 commits intoOct 9, 2026
Merged
Conversation
…tories
Comment lines only. A comment that says where something lives today now names
the package path; one that records a past state ("used to be", "split out of
the former") keeps the path it had then. The 32 locale-pack docblocks each
point at their own locale's entry file under src/sales/translations/.
Claude-Session: https://claude.ai/code/session_018Mk4tab2eCyY41UTWK7y7V
Co-authored-by: Claude <noreply@anthropic.com>
…ectories Comment lines only, same rule as the sales commit. The case-escalation flow's note names the platform lint rule instead of the test row #2012 retired. Claude-Session: https://claude.ai/code/session_018Mk4tab2eCyY41UTWK7y7V Co-authored-by: Claude <noreply@anthropic.com>
…ectories Comment lines only. quote.hook.ts's two billing-handoff notes name the contract-activated flow, the one of the two split successors that POSTs a contract's payment_terms and contract_type; the line-item note names the platform lint rule instead of the test row #2012 retired. Claude-Session: https://claude.ai/code/session_018Mk4tab2eCyY41UTWK7y7V Co-authored-by: Claude <noreply@anthropic.com>
…irectories Comment lines only. The seed note that cited the retired _campaign-metrics module now names the four refresh hooks whose inlined recompute it mirrors. Claude-Session: https://claude.ai/code/session_018Mk4tab2eCyY41UTWK7y7V Co-authored-by: Claude <noreply@anthropic.com>
…thing Claude-Session: https://claude.ai/code/session_018Mk4tab2eCyY41UTWK7y7V Co-authored-by: Claude <noreply@anthropic.com>
|
The latest updates on your projects. Learn more about Vercel for GitHub. |
…tory grep misses Patch round 1. The admin guide's Automation knobs sentence names each package's flows directory instead of the removed src/flows/. The comment in the activity actions' script body names src/sales/objects/event.hook.ts; the escaped-backtick spelling of that template literal is kept. Seven relative ./_shared.ts and ./_refusal.ts citations name the sales files they mean; the bare global.actions.ts mentions name activity-actions.ts; and two comments name the file that now holds campaign_lead_conversion_refresh. Claude-Session: https://claude.ai/code/session_018Mk4tab2eCyY41UTWK7y7V Co-authored-by: Claude <noreply@anthropic.com>
…n guide sentence and one script-body comment Claude-Session: https://claude.ai/code/session_018Mk4tab2eCyY41UTWK7y7V Co-authored-by: Claude <noreply@anthropic.com>
This was referenced Oct 9, 2026
…ent-paths Claude-Session: https://claude.ai/code/session_018Mk4tab2eCyY41UTWK7y7V Co-authored-by: Claude <noreply@anthropic.com>
zhuangjianguo
pushed a commit
that referenced
this pull request
Oct 9, 2026
…ssue-2042-account-page-defects Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_018Mk4tab2eCyY41UTWK7y7V
This was referenced Oct 9, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fixes #1919
Clause-②: no
What this changes
Comment lines in
src/**/*.tsthat still cite the flat directories the ADR-0130 package move removed —src/flows/,src/translations/,src/objects/,src/actions/,src/profiles/,src/sharing/,src/data/,src/views/,src/dashboards/,src/pages/, plus three more the dispatch asked to look for (src/skills/,src/hooks/,src/apps/) — and the two retired-test citations carried over in comment 6055754509.The rule, from comment 5686987990: a comment recording past state keeps the path it had then; a comment saying where something lives today must name the present path. Every site was read in context, not classified by grep. No non-comment line changes.
Counts (base
ac162c9, head6055671)Command, per directory:
git grep -n "src/DIR/" REV -- 'src/**/*.ts' | wc -lsrc/flows/src/sales/flows/index.ts:9, past state ("used to be")src/translations/src/objects/activity-actions.ts:381, inside a template literal (see below)src/actions/src/profiles/src/sharing/src/data/src/views/src/dashboards/src/pages/src/skills/,src/hooks/,src/apps/src/sales/objects/hooks.ts:4, past state ("used to hold")The dead set was checked, not assumed:
git ls-tree -d HEAD src/listsdocs marketing revenue sales service, and grouping everysrc/NAMEtoken insrc/by its first segment found the ten names plusskills,hooksandapps, one line each. The 18 sites kept are each in the per-site table with the reason.Evidence that only comments changed
git diff -U0 origin/main...HEAD -- 'src/**/*.ts' | grep -E '^[+-]' | grep -vE '^(\+\+\+|---) ' | grep -vE '^[+-][[:space:]]*(//|/?\*)'prints nothing (exit 1, 0 lines). The only other file in the diff is the changeset.//line that sits inside a template literal. The stronger check: parse each of the 94 changed.tsfiles at base and head with the TypeScript 6.0.2 compiler API and compare every non-comment token (template literal text included). All 94 have the same token stream. Positive controls: editing the template-literal line inactivity-actions.ts, or changing oneconsttolet, are both reported as a difference (exit 1).dist/objectstack.json, none of the new comment strings appear (for example,src/sales/objects/event.hook.tshas 0 hits). The template-literal text does ship:src/objects/event.hook.tshas 30 hits, from the activity actions'sourcebodies. That is why that one site is kept.Choices worth a reviewer's eye
src/*/flows/*.flow.ts. These are//line comments, so the glob is safe there, and AGENTS.md uses the same spelling.src/, then an asterisk, then a slash inside a block comment ends the comment early (TS1005). The two block-comment globs (crm.app.ts:20,_thresholds.ts:77) use a placeholder segment instead: in the source it is the wordpkgbetween angle brackets, the same placeholder style AGENTS.md andexecutive.dashboard.tsalready use. The table writes it as PKG.src/sales/translations/: 8 files for each ofen,es-ES,ja-JPandzh-CN. Each of the four target files carries theSPLIT AXIS (#1311)rule the docblock refers to.billing-handoff.flow.tssplit in two. Bothquote.hook.tssites talk about what is POSTed "when the contract activates" (payment_terms,contract_type), so both now namesrc/revenue/flows/billing-handoff-contract-activated.flow.ts. That flow's http node posts both fields.global.actions.tswas renamedsrc/sales/actions/activity-actions.tsin the move (its own docblock records this). The crm_caselog_callis created insrc/service/actions/case-activity.actions.ts. Forecast seed rows now live insrc/sales/data/forecast.seed.ts, not inrevenue.seed.ts. Task seed rows now live insrc/sales/data/activity.seed.ts, not inservice.seed.ts.contract-renewal.flow.tsis in the revenue package.src/objects/_campaign-metrics.tsno longer exists anywhere. Its recompute is inlined in four hooks, so the seed note names them. The "a seed cannot name a user" note that was at the foot ofsrc/data/index.tsnow lives inobjectstack.composition.tsat the repo root. It is cited the same wayactivity.seed.tsline 628 already cited it, and checked withtest -f(it is not undersrc/, sofind srccannot find it).objectstack lint --strictnow reportsfield-group-shadowedandflow-inert-node-condition, andpnpm lintfails on them. Both rule ids are present in the pinned@objectstack/lint, so each comment now names the rule andpnpm lint.Every newly written path or glob resolves: 66 distinct new path strings, each expanded with
compgen -G(placeholders expanded as wildcards), 0 missing.Verification
OS_VERIFY_LOCK_SLOT=hotcrm-1919 bash …/scripts/pm/os-verify-lock.sh -c 'pnpm verify'on head6055671:The token ratchet does not count comments, and this diff does not move it. For example, revenue reads ~15,641 business semantics and ~18,752 authored total, the same figures #2037's changeset recorded.
Changeset
This adds an empty-frontmatter changeset (
.changeset/1919-source-comment-paths.md). The diff is comment lines only and puts nothing new in the built artifact, so it releases nothing. An empty-frontmatter changeset is how this repo has recently declared "releases nothing", including the sibling ADR-0130 dead-link repoint (2030-changelog-dead-links.md, landed in #2033) and #2037.changeset-check.ymlcounts it as a changeset, so noskip-changesetlabel is needed.Acceptance notes
These were found while sweeping. They are outside this card's claimed surface, so they are not changed here. Each one is named in the dev report for the seat to place.
src/docs/crm_admin.md:106: "The business rules are defined in the flows undersrc/flows/". The card body counted this site, but the claim limits the surface tosrc/**/*.tscomment lines. It is an in-product page, andpnpm buildputs the sentence into the artifact's top-leveldocs[](1 hit indist/objectstack.json), so changing it ships text to users and needs a real changeset../_shared.tsinsrc/marketing/data/marketing.seed.ts:10,src/revenue/data/catalog.seed.ts:8andsrc/revenue/data/revenue.seed.ts:7(the file issrc/sales/data/_shared.ts)../_refusal.tsinsrc/marketing/objects/campaign.hook.ts:54,src/revenue/objects/contract.hook.ts:27,src/revenue/objects/product.hook.ts:23andsrc/revenue/objects/quote.hook.ts:33(the file issrc/sales/objects/_refusal.ts).src/files cite five test files that test: run the hook, flow and action suites on @objectstack/verify and retire the five hand-built harnesses #2013 (9451b6d) deleted:test/action-sandbox.test.ts(14),test/hook-write-shape.test.ts(3),test/hook-input-shape.test.ts(2),test/hook-query-predicate.test.ts(2) andtest/activity-actions.test.ts(1). This is the same kind of problem as the 6055754509 carry-over, one PR later.global.actions.tswithout a directory (opportunity.actions.ts:60,activity.seed.ts:550,event_attendee.object.ts:348) name a file the move renamed.activity-actions.ts:381(kept, see the table) is a present-tense pointer inside the shipped actionsource. Fixing it is a metadata change, not a comment change.Per-site table
Base line numbers. Every site from the dispatch's measurement, plus the two carry-over sites.
src/docs/crm_admin.md:106src/flows/src/**/*.tscomment lines): an in-product.mdpage compiled into the artifact'sdocs[], so editing it ships text to users. Named in the report for the seatsrc/marketing/data/marketing.seed.ts:9src/data/index.tssrc/data/index.ts(#635)"src/marketing/data/marketing.seed.ts:140src/objects/_campaign-metrics.tssrc/marketing/objects/andsrc/sales/objects/— the module is gone from every package: the recompute is inlined in four hooks (campaign.hook.ts,campaign_member.hook.ts,lead.campaign-metrics.hook.ts,opportunity.campaign-metrics.hook.ts), so the note names themsrc/marketing/flows/campaign-enrollment.flow.ts:210src/flows/campaign-member-enroll.flow.tssrc/marketing/flows/campaign-member-enroll.flow.ts— says where it lives todaysrc/marketing/objects/campaign.object.ts:311src/flows/*.flow.tssrc/*/flows/*.flow.ts— says where it lives todaysrc/marketing/objects/campaign_member.object.ts:56src/profiles/marketing-user.profile.tssrc/sales/profiles/marketing-user.profile.ts— says where it lives todaysrc/marketing/objects/campaign_member.object.ts:203src/actions/campaign.actions.tssrc/marketing/actions/campaign.actions.ts— says where it lives todaysrc/marketing/sharing/campaign.sharing.ts:8src/objects/campaign.object.tssrc/marketing/objects/campaign.object.ts— says where it lives todaysrc/revenue/data/catalog.seed.ts:7src/data/index.tssrc/revenue/data/revenue.seed.ts:6src/data/index.tssrc/revenue/objects/contract.object.ts:235src/objects/index.tssrc/sales/objects/index.ts— says where it lives todaysrc/revenue/objects/contract.object.ts:287src/flows/*.flow.tssrc/*/flows/*.flow.ts— says where it lives todaysrc/revenue/objects/quote.hook.ts:351src/flows/billing-handoff.flow.tssrc/revenue/flows/billing-handoff-contract-activated.flow.ts— split successor chosen by context: "POSTs to billing when the contract activates" is the contract-activated flow, which POSTspayment_termssrc/revenue/objects/quote.hook.ts:379src/flows/billing-handoff.flow.tssrc/revenue/flows/billing-handoff-contract-activated.flow.ts— split successor chosen by context: same flow, which POSTscontract_typeon activationsrc/revenue/objects/quote.object.ts:279src/objects/index.tssrc/sales/objects/index.ts— says where it lives todaysrc/revenue/objects/quote.object.ts:372src/flows/*.flow.tssrc/*/flows/*.flow.ts— says where it lives todaysrc/sales/actions/activity-actions.ts:9src/actions/global.actions.tssrc/actions/global.actions.tsuntil the ADR-0130 layout"src/sales/actions/activity-actions.ts:381src/objects/event.hook.tssource:template literal (the shipped action body), so editing it changes metadata bytes, outside the comment-only surface. The hook is named in the same sentence (event_activity_bubble)src/sales/actions/contact.actions.ts:48src/views/contact.view.tssrc/sales/views/contact.view.ts— says where it lives todaysrc/sales/actions/contact.actions.ts:66src/data/marketing.seed.tssrc/marketing/data/marketing.seed.ts— says where it lives todaysrc/sales/actions/lead.actions.ts:10src/flows/src/sales/flows/— says where it lives todaysrc/sales/actions/lead.actions.ts:35src/objects/lead.object.tssrc/sales/objects/lead.object.ts— says where it lives todaysrc/sales/actions/lead.actions.ts:116src/flows/schedule-followup.flow.tssrc/sales/flows/schedule-followup.flow.ts— says where it lives todaysrc/sales/actions/lead.actions.ts:148src/views/lead.view.tssrc/sales/views/lead.view.ts— says where it lives todaysrc/sales/apps/crm.app.ts:20src/views/*.view.tssrc/PKG/views/*.view.ts— says where it lives todaysrc/sales/apps/crm.app.ts:45src/skills/src/*/skills/— says where it lives todaysrc/sales/dashboards/crm.dashboard.ts:11//github.com/objectstack-ai/objectui/tree/main/examples/crm/src/dashboardsexamples/crm/src/dashboards), not a hotcrm pathsrc/sales/dashboards/executive.dashboard.ts:24src/translations/LOCALE/objects.pipeline.tssrc/sales/translations/LOCALE/objects.pipeline.ts— says where it lives todaysrc/sales/dashboards/executive.dashboard.ts:26src/translations/ja-JP/_shared.tssrc/sales/translations/ja-JP/_shared.ts— says where it lives todaysrc/sales/dashboards/sales.dashboard.ts:282src/views/forecast.view.tssrc/sales/views/forecast.view.ts— says where it lives todaysrc/sales/data/_shared.ts:6src/data/index.tssrc/data/index.ts"src/sales/data/activity.seed.ts:10src/data/service.seed.tssrc/data/service.seed.ts"; the next line names today's homesrc/sales/data/activity.seed.ts:173src/actions/global.actions.tssrc/sales/actions/activity-actions.ts— says where it lives todaysrc/sales/data/activity.seed.ts:532src/data/index.tsobjectstack.composition.ts, "A seed can't name a user" — the note moved to the composition file (repo root, sotest -f, notfind src); spelled as line 628 of the same file already cites itsrc/sales/data/forecast.seed.ts:8src/data/revenue.seed.tssrc/data/revenue.seed.ts"src/sales/data/forecast.seed.ts:113src/objects/forecast.object.tssrc/sales/objects/forecast.object.ts— says where it lives todaysrc/sales/data/forecast.seed.ts:173src/objects/forecast.object.tssrc/sales/objects/forecast.object.ts— says where it lives todaysrc/sales/data/sales.seed.ts:6src/data/index.tssrc/sales/data/sales.seed.ts:44src/objects/_territory.tssrc/sales/objects/_territory.ts— says where it lives todaysrc/sales/data/sales.seed.ts:91src/objects/event.hook.tssrc/sales/objects/event.hook.ts— says where it lives todaysrc/sales/data/sales.seed.ts:356src/objects/_territory.tssrc/sales/objects/_territory.ts— says where it lives todaysrc/sales/flows/index.ts:9src/flows/index.tsallFlowsarray at the bottom ofsrc/flows/index.ts"; the same comment names today's home (appFlowsinobjectstack.composition.ts)src/sales/flows/lead-conversion.flow.ts:199src/translations/*.tssrc/sales/translations/*.ts— says where it lives todaysrc/sales/flows/lead-conversion.flow.ts:279src/translations/*.tssrc/sales/translations/*.ts— says where it lives todaysrc/sales/mappings/_shared.ts:24src/objects/_picklists.tssrc/sales/objects/_picklists.ts— says where it lives todaysrc/sales/mappings/account_import.mapping.ts:64src/objects/account.hook.tssrc/sales/objects/account.hook.ts— says where it lives todaysrc/sales/mappings/lead_import.mapping.ts:19src/objects/lead.hook.tssrc/sales/objects/lead.hook.ts— says where it lives todaysrc/sales/objects/_hook-api.ts:157src/actions/contact.actions.tssrc/sales/actions/contact.actions.ts— says where it lives todaysrc/sales/objects/_picklists.ts:206src/views/lead.view.tssrc/sales/views/lead.view.ts— says where it lives todaysrc/sales/objects/_thresholds.ts:8src/flows/src/sales/flows/— says where it lives todaysrc/sales/objects/_thresholds.ts:9src/sharing/opportunity.sharing.tssrc/sales/sharing/opportunity.sharing.ts— says where it lives todaysrc/sales/objects/_thresholds.ts:77src/data/*.seed.tssrc/PKG/data/*.seed.ts— says where it lives todaysrc/sales/objects/account.object.ts:96src/data/sales.seed.tssrc/sales/data/sales.seed.ts— says where it lives todaysrc/sales/objects/account.object.ts:662src/flows/contract-renewal.flow.tssrc/revenue/flows/contract-renewal.flow.ts— contract-renewal lives in the revenue package, not the commenting file'ssrc/sales/objects/account.object.ts:718src/objects/index.tssrc/sales/objects/index.ts— says where it lives todaysrc/sales/objects/account.object.ts:732src/flows/*.flow.tssrc/*/flows/*.flow.ts— says where it lives todaysrc/sales/objects/contact.object.ts:298src/objects/index.tssrc/sales/objects/index.ts— says where it lives todaysrc/sales/objects/contact.object.ts:334src/flows/*.flow.tssrc/*/flows/*.flow.ts— says where it lives todaysrc/sales/objects/event.hook.ts:271src/objects/task.hook.tssrc/sales/objects/task.hook.ts— says where it lives todaysrc/sales/objects/event_attendee.object.ts:112src/views/lead.view.tssrc/sales/views/lead.view.ts— says where it lives todaysrc/sales/objects/event_attendee.object.ts:244src/actions/global.actions.tssrc/sales/actions/activity-actions.ts— says where it lives todaysrc/sales/objects/event_attendee.object.ts:358src/views/src/*/views/— says where it lives todaysrc/sales/objects/forecast.object.ts:15src/flows/forecast-snapshot.flow.tssrc/sales/flows/forecast-snapshot.flow.ts— says where it lives todaysrc/sales/objects/forecast.object.ts:96src/data/revenue.seed.tssrc/sales/data/forecast.seed.ts— forecast rows moved tosrc/sales/data/forecast.seed.ts, not to revenue.seed.tssrc/sales/objects/forecast.object.ts:228src/data/index.tsobjectstack.composition.ts, "A seed can't name a user" — same note, same successorsrc/sales/objects/forecast.object.ts:343src/data/revenue.seed.ts:339,378,393src/sales/data/forecast.seed.ts— forecast rows moved to the sales package (forecast.seed.ts line 8 records it); the stale line numbers are dropped, not renumberedsrc/sales/objects/hooks.ts:4src/hooks/index.tssrc/hooks/index.tsused to hold whole"src/sales/objects/lead.hook.ts:690src/views/lead.view.tssrc/sales/views/lead.view.ts— says where it lives todaysrc/sales/objects/lead.object.ts:632src/flows/*.flow.tssrc/*/flows/*.flow.ts— says where it lives todaysrc/sales/objects/opportunity.object.ts:642src/objects/index.tssrc/sales/objects/index.ts— says where it lives todaysrc/sales/objects/opportunity.object.ts:717src/flows/*.flow.tssrc/*/flows/*.flow.ts— says where it lives todaysrc/sales/objects/task.hook.ts:96src/data/service.seed.tssrc/sales/data/activity.seed.ts— the task rows moved tosrc/sales/data/activity.seed.ts(its line 10 records it); service.seed.ts holds nocompleted_datesrc/sales/objects/task.hook.ts:299src/objects/event.hook.tssrc/sales/objects/event.hook.ts— says where it lives todaysrc/sales/objects/task.hook.ts:409src/actions/contact.actions.tssrc/sales/actions/contact.actions.ts— says where it lives todaysrc/sales/objects/task.hook.ts:421src/actions/global.actions.tssrc/sales/actions/activity-actions.ts— says where it lives todaysrc/sales/objects/task.hook.ts:498src/objects/event.hook.tssrc/sales/objects/event.hook.ts— says where it lives todaysrc/sales/objects/task.object.ts:314src/flows/*.flow.tssrc/*/flows/*.flow.ts— says where it lives todaysrc/sales/pages/account_detail.page.ts:85src/actions/global.actions.tssrc/sales/actions/activity-actions.ts— says where it lives todaysrc/sales/pages/home.page.ts:24src/views/lead.view.tssrc/sales/views/lead.view.ts— says where it lives todaysrc/sales/pages/home.page.ts:30src/apps/crm.app.tssrc/sales/apps/crm.app.ts— says where it lives todaysrc/sales/pages/lead_detail.page.ts:84src/actions/lead.actions.tssrc/sales/actions/lead.actions.ts— says where it lives todaysrc/sales/pages/lead_detail.page.ts:85src/actions/global.actions.tssrc/sales/actions/activity-actions.ts— says where it lives todaysrc/sales/pages/opportunity_detail.page.ts:60src/actions/opportunity.actions.tssrc/sales/actions/opportunity.actions.ts— says where it lives todaysrc/sales/pages/opportunity_detail.page.ts:61src/actions/global.actions.tssrc/sales/actions/activity-actions.ts— says where it lives todaysrc/sales/profiles/guest-portal.profile.ts:31src/profiles/index.tssrc/sales/profiles/index.ts— says where it lives todaysrc/sales/profiles/marketing-user.profile.ts:8src/profiles/index.tssrc/sales/profiles/index.ts— says where it lives todaysrc/sales/profiles/marketing-user.profile.ts:21src/actions/lead.actions.tssrc/sales/actions/lead.actions.ts— says where it lives todaysrc/sales/profiles/sales-manager.profile.ts:15src/profiles/index.tssrc/sales/profiles/index.ts— says where it lives todaysrc/sales/profiles/sales-manager.profile.ts:17src/profiles/index.tssrc/sales/profiles/index.ts— says where it lives todaysrc/sales/profiles/sales-rep.profile.ts:39src/profiles/index.tssrc/sales/profiles/index.ts— says where it lives todaysrc/sales/profiles/service-agent.profile.ts:14src/profiles/index.tssrc/sales/profiles/index.ts— says where it lives todaysrc/sales/profiles/service-agent.profile.ts:27src/profiles/index.tssrc/sales/profiles/index.ts— says where it lives todaysrc/sales/profiles/service-agent.profile.ts:86src/sharing/positions.tssrc/sales/sharing/positions.ts— says where it lives todaysrc/sales/profiles/system-admin.profile.ts:17src/profiles/index.tssrc/sales/profiles/index.ts— says where it lives todaysrc/sales/profiles/system-admin.profile.ts:20src/profiles/index.tssrc/sales/profiles/index.ts— says where it lives todaysrc/sales/sharing/account.sharing.ts:22src/objects/_territory.tssrc/sales/objects/_territory.ts— says where it lives todaysrc/sales/sharing/demo-staffing.ts:67src/data/index.tsobjectstack.composition.ts— same note, same successorsrc/sales/sharing/demo-staffing.ts:83src/objects/_case-assignment.tssrc/service/objects/_case-assignment.ts— says where it lives todaysrc/sales/sharing/demo-staffing.ts:158src/profiles/service-agent.profile.tssrc/sales/profiles/service-agent.profile.ts— says where it lives todaysrc/sales/sharing/demo-staffing.ts:321src/objects/_territory.tssrc/sales/objects/_territory.ts— says where it lives todaysrc/sales/translations/en/_shared.ts:12src/translations/en.tssrc/sales/translations/en.ts— says where it lives todaysrc/sales/translations/en/app.ts:15src/translations/en.tssrc/sales/translations/en.ts— says where it lives todaysrc/sales/translations/en/objects.activity.ts:17src/translations/en.tssrc/sales/translations/en.ts— says where it lives todaysrc/sales/translations/en/objects.commerce.ts:17src/translations/en.tssrc/sales/translations/en.ts— says where it lives todaysrc/sales/translations/en/objects.customer.ts:19src/translations/en.tssrc/sales/translations/en.ts— says where it lives todaysrc/sales/translations/en/objects.marketing.ts:17src/translations/en.tssrc/sales/translations/en.ts— says where it lives todaysrc/sales/translations/en/objects.pipeline.ts:19src/translations/en.tssrc/sales/translations/en.ts— says where it lives todaysrc/sales/translations/en/objects.pipeline.ts:92src/views/lead.view.tssrc/sales/views/lead.view.ts— says where it lives todaysrc/sales/translations/en/objects.service.ts:19src/translations/en.tssrc/sales/translations/en.ts— says where it lives todaysrc/sales/translations/es-ES/_shared.ts:12src/translations/es-ES.tssrc/sales/translations/es-ES.ts— says where it lives todaysrc/sales/translations/es-ES/app.ts:17src/translations/es-ES.tssrc/sales/translations/es-ES.ts— says where it lives todaysrc/sales/translations/es-ES/objects.activity.ts:17src/translations/es-ES.tssrc/sales/translations/es-ES.ts— says where it lives todaysrc/sales/translations/es-ES/objects.commerce.ts:17src/translations/es-ES.tssrc/sales/translations/es-ES.ts— says where it lives todaysrc/sales/translations/es-ES/objects.customer.ts:19src/translations/es-ES.tssrc/sales/translations/es-ES.ts— says where it lives todaysrc/sales/translations/es-ES/objects.marketing.ts:17src/translations/es-ES.tssrc/sales/translations/es-ES.ts— says where it lives todaysrc/sales/translations/es-ES/objects.pipeline.ts:19src/translations/es-ES.tssrc/sales/translations/es-ES.ts— says where it lives todaysrc/sales/translations/es-ES/objects.pipeline.ts:138src/views/lead.view.tssrc/sales/views/lead.view.ts— says where it lives todaysrc/sales/translations/es-ES/objects.service.ts:19src/translations/es-ES.tssrc/sales/translations/es-ES.ts— says where it lives todaysrc/sales/translations/ja-JP/_shared.ts:12src/translations/ja-JP.tssrc/sales/translations/ja-JP.ts— says where it lives todaysrc/sales/translations/ja-JP/app.ts:17src/translations/ja-JP.tssrc/sales/translations/ja-JP.ts— says where it lives todaysrc/sales/translations/ja-JP/objects.activity.ts:17src/translations/ja-JP.tssrc/sales/translations/ja-JP.ts— says where it lives todaysrc/sales/translations/ja-JP/objects.commerce.ts:17src/translations/ja-JP.tssrc/sales/translations/ja-JP.ts— says where it lives todaysrc/sales/translations/ja-JP/objects.customer.ts:19src/translations/ja-JP.tssrc/sales/translations/ja-JP.ts— says where it lives todaysrc/sales/translations/ja-JP/objects.marketing.ts:17src/translations/ja-JP.tssrc/sales/translations/ja-JP.ts— says where it lives todaysrc/sales/translations/ja-JP/objects.pipeline.ts:19src/translations/ja-JP.tssrc/sales/translations/ja-JP.ts— says where it lives todaysrc/sales/translations/ja-JP/objects.pipeline.ts:124src/views/lead.view.tssrc/sales/views/lead.view.ts— says where it lives todaysrc/sales/translations/ja-JP/objects.service.ts:19src/translations/ja-JP.tssrc/sales/translations/ja-JP.ts— says where it lives todaysrc/sales/translations/zh-CN/_shared.ts:12src/translations/zh-CN.tssrc/sales/translations/zh-CN.ts— says where it lives todaysrc/sales/translations/zh-CN/app.ts:17src/translations/zh-CN.tssrc/sales/translations/zh-CN.ts— says where it lives todaysrc/sales/translations/zh-CN/objects.activity.ts:17src/translations/zh-CN.tssrc/sales/translations/zh-CN.ts— says where it lives todaysrc/sales/translations/zh-CN/objects.activity.ts:51src/views/task.view.tssrc/sales/views/task.view.ts— says where it lives todaysrc/sales/translations/zh-CN/objects.commerce.ts:17src/translations/zh-CN.tssrc/sales/translations/zh-CN.ts— says where it lives todaysrc/sales/translations/zh-CN/objects.customer.ts:19src/translations/zh-CN.tssrc/sales/translations/zh-CN.ts— says where it lives todaysrc/sales/translations/zh-CN/objects.marketing.ts:17src/translations/zh-CN.tssrc/sales/translations/zh-CN.ts— says where it lives todaysrc/sales/translations/zh-CN/objects.pipeline.ts:19src/translations/zh-CN.tssrc/sales/translations/zh-CN.ts— says where it lives todaysrc/sales/translations/zh-CN/objects.pipeline.ts:111src/views/lead.view.tssrc/sales/views/lead.view.ts— says where it lives todaysrc/sales/translations/zh-CN/objects.service.ts:19src/translations/zh-CN.tssrc/sales/translations/zh-CN.ts— says where it lives todaysrc/sales/translations/zh-CN/objects.service.ts:57src/views/task.view.tssrc/sales/views/task.view.ts— says where it lives todaysrc/sales/views/forecast.view.ts:66src/dashboards/sales.dashboard.tssrc/sales/dashboards/sales.dashboard.ts— says where it lives todaysrc/sales/views/lead.view.ts:212src/pages/lead_detail.page.tssrc/sales/pages/lead_detail.page.ts— says where it lives todaysrc/sales/views/opportunity.view.ts:96src/actions/opportunity.actions.tssrc/sales/actions/opportunity.actions.ts— says where it lives todaysrc/sales/views/opportunity.view.ts:276src/views/knowledge_article.view.tsstale_articles"carried the same expired premise … that tab was then DELETED" (#769, #781)src/sales/views/task.view.ts:222src/flowssrc/*/flows— says where it lives todaysrc/service/actions/case.actions.ts:8src/flows/case-actions.flow.tssrc/service/flows/case-actions.flow.ts— says where it lives todaysrc/service/actions/case.actions.ts:45src/sharing/case.sharing.tssrc/service/sharing/case.sharing.ts— says where it lives todaysrc/service/actions/case.actions.ts:67src/actions/src/actions/src/service/actions/case.actions.ts:73src/sharing/case.sharing.tssrc/service/sharing/case.sharing.ts— says where it lives todaysrc/service/actions/knowledge_article.actions.ts:14src/objects/article_feedback.object.tssrc/service/objects/article_feedback.object.ts— says where it lives todaysrc/service/data/service.seed.ts:17src/data/index.tssrc/service/flows/case-actions.flow.ts:65src/flows/case-escalation-stamp.flow.tssrc/service/flows/case-escalation-stamp.flow.ts— says where it lives todaysrc/service/flows/case-actions.flow.ts:138src/flows/case-escalation-stamp.flow.tssrc/service/flows/case-escalation-stamp.flow.ts— says where it lives todaysrc/service/flows/case-actions.flow.ts:189src/objects/case.hook.tssrc/service/objects/case.hook.ts— says where it lives todaysrc/service/flows/case-actions.flow.ts:224src/objects/_case-assignment.tssrc/service/objects/_case-assignment.ts— says where it lives todaysrc/service/flows/case-escalation.flow.ts:106src/objects/_case-assignment.tssrc/service/objects/_case-assignment.ts— says where it lives todaysrc/service/flows/case-sla-monitor.flow.ts:171src/objects/_case-assignment.tssrc/service/objects/_case-assignment.ts— says where it lives todaysrc/service/objects/_case-assignment.ts:96src/flows/case-sla-monitor.flow.tssrc/service/flows/case-sla-monitor.flow.ts— says where it lives todaysrc/service/objects/_case-assignment.ts:159src/views/case.view.tssrc/service/views/case.view.ts— says where it lives todaysrc/service/objects/_case-assignment.ts:246src/sharing/positions.tssrc/sales/sharing/positions.ts— says where it lives todaysrc/service/objects/_case-assignment.ts:284src/sharing/demo-staffing.tssrc/sales/sharing/demo-staffing.ts— says where it lives todaysrc/service/objects/_case-assignment.ts:438src/profiles/service-agent.profile.tssrc/sales/profiles/service-agent.profile.ts— says where it lives todaysrc/service/objects/_case-assignment.ts:513src/sharing/case.sharing.tssrc/service/sharing/case.sharing.ts— says where it lives todaysrc/service/objects/_case-sla.ts:18src/views/account.view.tscrm_account.tierwas the other half of the same gap", written in #595 (d8f5eee, 2026-08-11)src/service/objects/_case-sla.ts:65src/data/service.seed.tssrc/service/data/service.seed.ts— says where it lives todaysrc/service/objects/article_feedback.object.ts:21src/flows/case-actions.flow.tssrc/service/flows/case-actions.flow.ts— says where it lives todaysrc/service/objects/case.hook.ts:59src/hook-wrappers.ts@objectstack/objectqlsrc/hook-wrappers.tssrc/service/objects/case.hook.ts:122src/views/case.view.tssrc/service/views/case.view.ts— says where it lives todaysrc/service/objects/case.hook.ts:353src/profiles/service-agent.profile.tssrc/sales/profiles/service-agent.profile.ts— says where it lives todaysrc/service/objects/case.hook.ts:354src/profiles/index.tssrc/sales/profiles/index.ts— says where it lives todaysrc/service/objects/case.object.ts:209src/objects/event.hook.tssrc/sales/objects/event.hook.ts— says where it lives todaysrc/service/objects/case.object.ts:403src/objects/index.tssrc/sales/objects/index.ts— says where it lives todaysrc/service/objects/case.object.ts:473src/flows/*.flow.tssrc/*/flows/*.flow.ts— says where it lives todaysrc/service/pages/case_detail.page.ts:57src/actions/case.actions.tssrc/service/actions/case.actions.ts— says where it lives todaysrc/service/pages/case_detail.page.ts:58src/actions/global.actions.tssrc/service/actions/case-activity.actions.ts— the crm_caselog_callis instantiated incase-activity.actions.tsfrom the sales factorysrc/service/views/case.view.ts:158src/objects/_case-assignment.tssrc/service/objects/_case-assignment.ts— says where it lives todaysrc/service/views/case.view.ts:203src/sharing/case.sharing.tssrc/service/sharing/case.sharing.ts— says where it lives todaysrc/service/views/case.view.ts:325src/objects/case.object.tssrc/service/objects/case.object.ts— says where it lives todaysrc/revenue/objects/opportunity_line_item.object.ts:69test/field-groups-coverage.test.tsfield-group-shadowed, whichpnpm lintfails on — carry-over 6055754509: that test row was retired by #2012 (99d290a)src/service/flows/case-escalation.flow.ts:122test/flow-decision-authority.test.tsflow-inert-node-condition, whichpnpm lintfails on — carry-over 6055754509: that test row was retired by #2012 (99d290a)Patch round 1
The seat amended the claim surface in 6083234145 and chose option A. Head
98cd002, which mergesorigin/mainc75dd42(#2041) into the round-0 branch; the merge base for every reading below isc75dd42.What changed in this round
src/docs/crm_admin.md:106, the in-product admin guide. "The business rules are defined in the flows undersrc/flows/" now reads "The business rules are defined in the flows, and each package keeps its own flows in itsflows/directory." The rest of that paragraph and the knobs table are unchanged.src/sales/actions/activity-actions.ts:381: the//comment inside the activity actions'sourcescript body now namessrc/sales/objects/event.hook.ts(find src -name event.hook.tsfinds exactly that one file). The template literal's escaped-backtick spelling is kept byte for byte../_shared.tsbecomessrc/sales/data/_shared.tsinsrc/marketing/data/marketing.seed.ts,src/revenue/data/catalog.seed.tsandsrc/revenue/data/revenue.seed.ts../_refusal.tsbecomessrc/sales/objects/_refusal.tsinsrc/marketing/objects/campaign.hook.ts,src/revenue/objects/contract.hook.ts,src/revenue/objects/product.hook.tsandsrc/revenue/objects/quote.hook.ts.global.actions.tsbecomesactivity-actions.ts(one file in the tree) insrc/sales/actions/opportunity.actions.ts:60,src/sales/data/activity.seed.ts:551andsrc/sales/objects/event_attendee.object.ts:348. Theopportunity.actions.tsline is inside theclone_opportunityscript body, the same kind of site asactivity-actions.ts:381.(campaign.hook.ts)forcampaign_lead_conversion_refreshbecomessrc/sales/objects/lead.campaign-metrics.hook.ts, insrc/marketing/objects/campaign_member.object.ts:205and in the comment abovetest/seed-consistency.test.ts:304. That comment now lists all four hooks in their real files.campaign.hook.tsmention was already correct and is untouched..changeset/1919-source-comment-paths.mdis now'hotcrm': patch, written for the release-notes reader, because the admin guide sentence and the two script-body comments ship.Evidence (merge base
c75dd42vs head98cd002)Line filter:
git diff -U0 c75dd42...HEAD -- '*.ts' | grep -E '^[+-]' | grep -vE '^(\+\+\+|---) ' | grep -vE '^[+-][[:space:]]*(//|/?\*)'prints 0 lines. The two non-.tsfiles in the diff aresrc/docs/crm_admin.md(the one guide sentence) and the changeset.Token streams: I compared all 102 changed
.tsfiles with the TypeScript compiler API, reporting every differing token as its minimal changed slice. 100 files are identical. The other 2 each differ in exactly one template token, and the slice is inside a//comment of the script body:activity-actions.ts: empty becomessales/, on the linesrc/sales/objects/event.hook.ts;opportunity.actions.ts:global.becomesactivity-.consttoletis reported (exit 1).Artifact
dist/objectstack.json, built by the verify run below:src/flows/src/sales/objects/event.hook.tssrc/objects/event.hook.tsactivity-actions.ts (#548)global.actions.tsPaths: 73 distinct new path strings across the whole PR diff, each expanded with
compgen -G, 0 missing. The bare names (activity-actions.ts,campaign.hook.ts,campaign_member.hook.ts) each match exactly 1 file withfind src -name.The feat(accounts): the account record page header draws the company logo (#1199) #2041 merge was a clean text merge.
account.object.tskeeps both sides, and the newimageFieldcomment cites no path.grep -rn "src/flows" src/now finds one line,src/sales/flows/index.ts:9: "which used to be theallFlowsarray at the bottom ofsrc/flows/index.ts". It is kept as past state under acceptance 3 of 5686987990 (row 42 of the table).OS_VERIFY_LOCK_SLOT=hotcrm-1919 bash …/scripts/pm/os-verify-lock.sh -c 'pnpm verify'on head98cd002:Still not in this PR: the 22 comment lines citing test files deleted by #2013. They stay in Acceptance notes.
Superseded by this round (the round-0 text above is left as written; where they disagree, this section holds):
.tsfile (round 1 adds one sentence in the in-product admin guide; see Patch round 1).'src/objects/reads '| 32 | 1 | activity-actions.ts:381, inside a template literal (see below) |'. It is now 32 → 0.src/docs/crm_admin.md:106: …', '- Seven broken relative paths in comments, from the same move: …', '- Three bare mentions ofglobal.actions.tswithout a directory …', '-activity-actions.ts:381(kept, see the table) …'. The bullet on the 22 lines citing tests deleted by test: run the hook, flow and action suites on @objectstack/verify and retire the five hand-built harnesses #2013 stays.src/docs/crm_admin.md:106) and row 18 (src/sales/actions/activity-actions.ts:381) were 'kept'. They are now 'changed', to the guide sentence and tosrc/sales/objects/event.hook.tsrespectively.Seat decision on round 1's open question: the one remaining
src/flows/line,src/sales/flows/index.ts:9, records where the flow order USED to live. Under the card's criterion (5686987990: a past-state comment keeps its path) and its acceptance 3 (a kept site says why), it stays, andFixes #1919holds.Generated by Claude Code