Repository navigation
Implementation notes are shown to users as help text — field and dashboard-widget descriptions cite hook files, card numbers, DESIGN.md sections and PRs - #103
Draft
objectstack-fleet[bot] wants to merge 4 commits into
Conversation
Field descriptions render as help text under every form field, and many cited hook files, card numbers, DESIGN.md sections, flow codes and API field names. Each now says what the field means to the user; the implementation notes that were not already in the object headers move into code comments beside the field. Three help texts were also wrong, not just technical, and are corrected while rewritten: the contract type's review SLA promised a per-type reminder that fires at a fixed 30 days; the obligation and payment-plan status texts (both locales) omitted transitions the state machine allows (in_progress -> overdue; partial -> paid / overdue). The en bundle mirrors every changed inline string; zh-CN help that carried the same notes (design-doc citations, write-layer mechanics) is rewritten in step. No key added or removed, no behaviour change. Co-Authored-By: Claude <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01HihZ11bQSqjCgjzHbpv4M1
Four widget descriptions on the legal and finance boards told the reader about seeded SLAs, the F4 flow, "the PR" and a daily job's stamping. They now state what the tile counts; the reasoning already lives in each widget's code comment. en and zh-CN bundles in step. Co-Authored-By: Claude <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01HihZ11bQSqjCgjzHbpv4M1
Flow descriptions named a decision number, an upstream issue, API field names and "insert-time twin"; they now say what the automation does, with the mechanics moved into code comments. The two held flows (contract-intake, contract-approval) are untouched. Co-Authored-By: Claude <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01HihZ11bQSqjCgjzHbpv4M1
The review-ageing tile truncated its help after two lines, hiding the point; it now leads with the fixed 30-day threshold the title does not state. Contract Language is a picker of language names, so "ISO 639-1 code" told the user to type something they never type; the code note moves to a comment. Parent Contract drops a field:value aside. Co-Authored-By: Claude <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01HihZ11bQSqjCgjzHbpv4M1
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.
Part of #95 — the objects, dashboards, flows and translation-bundle half. The descriptions that live in files held by other in-flight work (listed under "Left for the follow-up") are not touched here, so #95 remains open after this merges.
What changed
Every
descriptionin the claimed surface was enumerated and classified as user-facing, implementation note, or mixed. The notes and mixed ones were rewritten for the person reading the screen, in English and in zh-CN, and any implementation detail that was not already in the object or flow header now sits in a code comment beside the field. No key is added or removed, no option value, label key or behaviour changes.src/objects/*.object.tssrc/dashboards/**src/flows/**(excluding the two held flows)src/translations/en/**src/translations/zh-CN/**What left user-facing text: hook file names (
contract.hook.ts,mirror.hook.ts), card numbers ("card 09"), DESIGN.md section citations, "see the PR", decision and upstream issue numbers, flow codes (F1, F3, F4, F5, F6, F8, F13, F14, F15, F16, S2/S6), API field and object names (currency_code,is_expiring,clm_payment_plan.planned_amountand so on), and mechanics such as "stored mirror", "write layer", "guard reads the children directly", "1-based", "seeded type SLA".Where a note was useful to a user, the meaning stays and the mechanics go. Two examples: the review-ageing tile still says it is a fixed 30-day threshold; the department field still says department-level sharing is not in the standard product.
Mirror-field help (display names) now says "Filled in automatically as ..." and shows the shape in words (for example "clause title · status").
Corrections, not only rewording
Four help texts were wrong, and each was rewritten anyway:
legal-review-sla.flow.ts, decision [Decision] §09 要「各段时长」和「超 SLA」,但语义层算不出时间差——两问共用一个补法 #31). The help now says so in both locales.In Progress → Overdue, and the zh-CN text also omittedPending → Overdue. Payment plan → Status omitted bothPartialedges. Both locales now match the state machine incontract.hook.ts.renewal_notice. This is now stated in the new code comment; the user text names no flow.The review-ageing widget help used to get cut off after two lines ("…a fixed threshol…"). It now leads with "A fixed 30-day threshold…", which fits; the tile title already states "Over 30 Days".
Left for the follow-up (held files, not in this PR's surface)
src/flows/contract-approval.flow.ts(held by PR On a README-configured install the approval ladder sticks forever at its first rung —manager_reviewresolves tomanager:undefined, locks the contract, and no approver is told anything is waiting #101): the rung labelHead of Legal + Finance Controller (会签)(line 280) and the edge labelLegal + finance (会签)(line 433).src/actions/contract-lifecycle.actions.ts(held by PR The intake wizard's "Submit now" fails for every requester —FLOW_FAILED, the edit-window RLS policy refuses the post-submit row, while the header Submit button on the same draft succeeds #91): the submit, send-to-approval and activate descriptions cite F2, F5, F9 andactivated_at(lines 105, 122, 146), and so do theirclm_contract._actionskeys in both bundles.src/actions/contract-backfill.actions.ts(not in the claimed surface): the action description (active,is_backfilled, line 48), the param help "It becomes both signed_at and executed_at" (line 57) and "kind final_signed" (line 58), plus the_actions.executed_upload.descriptionbundle key.src/datasets/**(not in the surface):contract_cycle_timesays "see the module comment";obligation_metricsandpayment_metricssay "the arrears the daily job stamps". Thedatasets.*bundle keys are the same text.src/profiles/*.profile.tsandsrc/sharing/contract.sharing.ts(not in the surface): the row-policy and sharing-rule descriptions shown in Setup open with "DESIGN.md §04" and policy names.src/views/**andsrc/apps/**: owned by Seven smaller things a real user hits (from the 17.7.0 browser pass): legal tabs shown to requesters, a template toggle with no template, renewal with no link, orphan drafts, a false demo note, an empty landing page for lawyers #99. My scan found no implementation note there.Gates — on
7794860(the head of this PR)Run as
pnpm verifythrough the container's verify lock (VERDICT command-exit 0). The four gates are the same set CI runs.Control-byte self-scan over the 25 changed files: no match.
Browser evidence
pnpm exec objectstack dev --ui --compile --seed-admin --no-watch -p 3495was run on a fresh SQLite file, once on46e65f0(before) and once on this branch (after). Playwright drove the pre-installed Chromium, signed in as the seeded dev admin, and read each form's text.degraded,no such tableor plugin-load failure. The 9 boot diagnostics are the same in both runs: scheduled work is off by deployment policy, the analytics security-bridge notice, plain-HTTP OAuth on loopback, and onesys_migrationUNIQUE insert retry.GET /api/v1/auth/get-sessionbefore sign-in, plus one 404 resource load on the login page. Nothing else.What the screen showed (one line per help text, before → after):
zh-CN was checked with a browser locale of
zh-CN. The Legal Workbench showed "固定的 30 天阈值,不是各合同类型自己的审查时限。" and "这是数量,不是平均周转时长。". The new-obligation form showed the corrected status table "待办可转为进行中、已完成、已豁免或已逾期;进行中可转为已完成、已豁免或已逾期;…".The PM seat has the screenshots, three before and three after, plus one zh-CN dashboard.
Acceptance notes
country_code: its only uses arehighlightFieldsand a list column, and the intake form's governing-law input has no default. Measured on the party New form in the browser. This is not an implementation note, so it is not rewritten here; it is reported to the seat.payment-plan.object.tsheader comment still draws the old state table without thepartialedges. This is a code comment, not user text, and is left as is.Deviations from the suggested route
execute_contractcapability, which the seeded platform admin does not hold. Granting it on a local database was refused by the session's permission classifier. That database was deleted and the "before" run repeated on a fresh one. The evidence uses the contract create form, which renders the same inherited field help. The action's own param help is in a file outside this surface (listed above).Generated by Claude Code