Skip to content

Remove clm_signature.notes, which only the demo seed fills (#38 ruling C) - #121

Merged
zhuangjianguo merged 1 commit into
mainfrom
claude/issue-38-signature-notes
Oct 25, 2026
Merged

zhuangjianguo merged 1 commit into
mainfrom
claude/issue-38-signature-notes

Conversation

@objectstack-fleet

Copy link
Copy Markdown
Contributor

Part of #38 — ruling C (batch 5): remove clm_signature.notes, which only the demo seed fills
Clause-②: no
Metadata-protocol: none

#38 remains open: the governed DESIGN.md §03 field-line sync still has to land through the seat's design-doc PR (exact edit under Acceptance notes). clm_contract_version.notes is untouched, as the ruling says: three of the product's own flows write it.

What changed (head 134ebef, rebased on origin/main 4460d31)

Ruling 6398275254, letter C: a signature round's notes was filled only by the demo seed. No flow or action writes it, and the signature record page already draws the Discussion panel (sys_comment) for what a person would type. It is removed with everything that only existed to fill it:

  • src/objects/signature.object.ts: the notes textarea is gone from clm_signature.
  • src/data/negotiation.seed.ts: the seed no longer writes notes on the 30 rounds.
  • src/data/strings.ts: the signatureNotes slot is gone from DemoStrings.
  • src/data/demo-en/index.ts, src/data/demo-zh/index.ts: the signatureNotes entry and the SIGNATURE_NOTES import are gone.
  • src/data/demo-en/prose.ts, src/data/demo-zh/prose.ts: the four SIGNATURE_NOTES strings per locale are gone. Without the slot they would be a dead export.
  • src/data/plan-children.ts: SignaturePlan.noteIndex and its two assignments are gone. A grep showed it had no other reader: noteIndex appeared only at its declaration, its two assignments and negotiation.seed.ts:141.
  • src/translations/en/objects.lifecycle.ts, src/translations/zh-CN/objects.lifecycle.ts: the clm_signature.fields.notes key is gone from both bundles.

No view, page, profile or flow names clm_signature.notes. Grep: the only 'notes' column in src/views is payment-plan.view.ts:98, which is clm_payment_plan. 10 files, +0 / −34.

Rebase note: PR #118 (signing entities) landed while this was in flight. The conflict was in the two demo index.ts import lists. The resolution keeps #118's SIGNING_ENTITIES and drops SIGNATURE_NOTES. Everything below was measured on the rebased head.

Proof

Zero references. git grep -n -E "signatureNotes|SIGNATURE_NOTES|noteIndex" gives exit 1 with no lines. The remaining notes hits in src/ belong to clm_contract_version, clm_obligation, clm_payment_plan, the three flows' version writes and comments. None is a clm_signature reference.

pnpm demo on a clean .objectstack/data. Both runs used rm -rf .objectstack/data, then pnpm demo:

main 4460d31 branch 134ebef
Seed loading completed {"inserted":823,"updated":0,"skipped":0,"errored":404,"referencesDropped":0} identical
WARN/ERROR/⚠ digest (timestamps, quoted values and numbers normalised, sort | uniq -c) baseline diff exit 0, no new line
degraded / no such table 0 0
GET /api/v1/data/clm_signature 200, 30 rows, notes filled on 30 200, 30 rows, no notes key on any
GET /api/v1/meta/object/clm_signature 19 fields, has notes 18 fields, no notes
GET /api/v1/meta/object/clm_contract_version has notes has notes (control)
PATCH /api/v1/data/clm_signature/ID {notes} — 400 {"error":"Unknown field 'notes' on object 'clm_signature'","code":"INVALID_FIELD"}

The 404 errored rows are the known SeedLoader lines for users that were never seeded: clm_obligation.owner 199, clm_contract.owner_id 120, legal_owner 68, clm_deviation.decided_by 17. Main has the same counts.

Browser. Playwright on /opt/pw-browsers/chromium-1243, signed in as admin, en-US and zh-CN contexts. Main was driven the same way for comparison.

  • Signature record /_console/apps/clm/clm_signature/record/2HOHV660TOTTs4g1 (Wet ink · Sent):
    • en: Signing Round shows CONTRACT / ENVELOPE ID / SIGNERS. There is no NOTES label, and the Discussion (2) panel is drawn with its comment box.
    • zh-CN: 签署轮次 shows 信封 ID. There is no 备注, and 讨论 (2) is drawn.
    • On main, the same kind of record (1A3mxzcUCDCgFaro) shows an Execution section with NOTES Notarisation booked; the witnessed copy is still outstanding. (zh 备注).
  • Contract version control: no versions are seeded on either tree (total 0), so each run created one through the API, uploading a PDF and then POST /api/v1/data/clm_contract_version with notes, which answered 201. Its record page …/clm_contract_version/record/VLv_qvT4ymiH_Guf shows NOTES (en) / 备注 (zh-CN) with the note text. This control is unchanged from main.
  • Console messages are the same set on main and on the branch:
    • en: one 401 GET /api/v1/auth/get-session before sign-in, plus one 404 resource load.
    • zh-CN: the 401 only.

Gates (on 134ebef, each exit code captured to its own file before any pipe)

gate exit verdict line
pnpm install 0 Done in 781ms using pnpm v10.28.0
pnpm validate 0 ✓ Validation passed (864ms) · Data: 11 Objects 167 Fields (main 4460d31: 168) · 6 warnings, all approval-approvers-may-resolve-empty, same as main
pnpm lint 0 6 suggestion(s) (967ms)
pnpm typecheck 0 tsc --noEmit clean
pnpm lint:i18n-gate 0 ✓ i18n gate · COVERAGE : 0 missing keys across 2 locale(s)

Acceptance notes

  1. Governed §03 sync, for the seat's design-doc PR. This PR does not touch it. In DESIGN.md line 110 (the clm_signature row of the §03 field table), the row's tail changes from

    · executed_file file · completed_at · notes |

    to

    · executed_file file · completed_at |

    No other part of the row changes. The clm_contract_version row keeps its notes. The same PR still carries the clm_party row drift and §08 line 289 from PR Remove clm_party.screened_at and clm_contract_type.template_placeholders; note the e-sign fields' scheduled consumer (#38 groups 3 and 1) #116's notes.

  2. The file list grew by two files, both mechanical. src/data/plan-children.ts (noteIndex) is the plan field the dispatch named. demo-en/prose.ts and demo-zh/prose.ts hold the SIGNATURE_NOTES constants that only fed STRINGS.signatureNotes; keeping them would leave a dead export in each.

  3. What the record page shows now. On a round with no formalities ticked and no executed copy, notes was the only field in the execution group that had a value. The platform does not draw a section whose fields are all empty, so on such a round the Execution section no longer appears; Completed At still shows in the header. Rounds that have formalities or an executed copy keep the section. The contract_type Template section in PR Remove clm_party.screened_at and clm_contract_type.template_placeholders; note the e-sign fields' scheduled consumer (#38 groups 3 and 1) #116 behaves the same way. The fields remain on the object and in the edit form's execution group. That last point comes from the metadata; I did not open the edit form in the browser.

  4. Existing databases. An existing database keeps an orphaned clm_signature.notes column. PR Remove clm_party.screened_at and clm_contract_type.template_placeholders; note the e-sign fields' scheduled consumer (#38 groups 3 and 1) #116 measured what happens with an orphaned column on 18.1: boot prints [schema-drift] … column exists in the database but not in metadata (orphaned), the column stays until os migrate apply --allow-destructive, and writes naming the field get 400 INVALID_FIELD (measured here as well). I did not re-run the existing-database boot for this field. Demo databases are rebuilt clean.

🤖 Generated with Claude Code

https://claude.ai/code/session_017nzWFRUo2U7evMkPdVniAn

Ruling C on #38 (batch 5): a signature round's notes were written by the
demo seed alone, no flow or action produces them, and the record page's
Discussion panel (sys_comment) already carries what a person would type.
Drop the field, its seed value, the four SIGNATURE_NOTES strings per demo
locale with their DemoStrings slot, the plan's noteIndex that only fed
them, and the field's en and zh-CN bundle keys.

clm_contract_version.notes stays: three of the product's flows write it.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017nzWFRUo2U7evMkPdVniAn
@objectstack-fleet

Copy link
Copy Markdown
Contributor Author

席位核对 — ACCEPT · head 134ebef · 2026-10-25T13:57Z

check reading
shape draft → main, Part of #38, no closing keyword; assignee zhuangjianguo
CI on the head both Validate check-runs success on 134ebef = PR head.sha; mergeable clean
scope 10 files, deletions only (+0/−34): clm_signature.notes, its seed value, the signatureNotes slot and its four strings per locale, noteIndex (nothing else read it), both bundle keys; clm_contract_version.notes untouched; nothing governed. plan-children.ts and the two prose.ts files go beyond the claim's list only to delete what fed the removed slot — accepted
the ruling 6398275254 letter C — delivered
measured (dev, 18.1.0) seed 823 / 404 identical to main; WARN digest diff empty; clm_signature 18 fields (main 19), PATCH {notes} → 400; signature page shows no Notes and keeps Discussion, en + zh-CN; a version record still shows its notes
PR-body correction (seat) Acceptance note 3: "Completed At shows in the header once the round has one" — a sent round shows Method and Status only

Landing: under the maintainer's merge authorization (project thread: 「你可以自己审核的就自己合并」). The §03 line rides PR #120 (already edited there).


Generated by Claude Code

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants