Skip to content

Neutral default progress phrases and readable position names everywhere — remove the last customer-specific defaults (folds #120) #128

Closed

Description

@os-warren

Part of #127 (A — neutral defaults).

Why

duly_task.progress ships four preset phrases authored for one customer's house style — "Passed down to the departments" / 已下发各部门 reads as a specific organisation's vocabulary, not a template's. A deployment that wants its own phrases today has to edit src/objects/task.object.ts and both translation bundles. #117 made position codes readable in the demo seed; #120 records that samples/catalog-items.csv, the two catalog action placeholders and docs/import/walkthrough.md still say plant_compliance_officer.

What "done" is

  1. Neutral default phrases, en + zh-CN, that read as a template: e.g. Started / Waiting on someone else / Blocked / Nearly done (pick wording that stays true to the design rule in task.object.ts — a phrase, not a percentage, and the stamp list in src/hooks/task.hook.ts must still treat a phrase change as activity). Existing demo rows and src/data/demo-zh.ts follow the new values; test/seed-locale.test.ts stays green.
  2. One documented place to change them. A short section in README.md ("Change the progress phrases") naming the field, the two bundles, and the fact that the stored value is the option value, so renaming a label does not rewrite history.
  3. finding: readable position codes stopped at the demo seed — samples, action placeholders and docs still say plant_compliance_officer #120 folded in: readable position names in samples/catalog-items.csv, the catalog action placeholders in src/actions/catalog.actions.ts, their zh-CN mirrors, and docs/import/walkthrough.md; test/import-samples.test.ts keeps reading headers off the schema. Close finding: readable position codes stopped at the demo seed — samples, action placeholders and docs still say plant_compliance_officer #120 from the PR.
  4. Four gates green; pnpm demo and pnpm demo:zh both boot with the new phrases visible on My week (one screenshot each in the PR).

Not in this card

Making the phrases editable from Setup / Studio without code — that is the measurement card's job.

Activity

  1. objectstack-fleet commented on Oct 26, 2026

    @objectstack-fleet
    Contributor

    Scope addition folded in at 2026-10-26T07:05Z by the duly lane seat (session session_011HyoSXGRy6L13mYq1Hp4n1), from the #132 review (PR #141, comment 6410215453). Same family as this card — customer residue and walkthrough wording — and this card already owns docs/import/walkthrough.md:

    1. Customer sales-deck references. 37 lines in 11 files under src/, test/ and docs/import/ cite the original customer's deck as the reason for a design choice (deck pNN, 方案 pNN, pre-sales). The per-file list is item 4 of docs/template-checklist.md once docs: make the repository template-shaped — empty first boot, readiness checklist, getting started #141 lands; re-derive it with git grep -n -iE '\bdeck\b|方案|pre-sales' -- src test docs/import. Reword each to state the design reason itself; no behaviour change. When done, item 4 of the checklist can turn green for that half.
    2. docs/import/walkthrough.md step 2 says imported people are "directory rows, not logins — nobody can sign in as them". On 17.3.0 the same People import creates accounts and sends invitation emails (measured on Make the repository template-shaped: empty first boot, template-readiness checklist, README and getting-started for a reader with their own spreadsheet #132). Re-measure on what this repo installs when you take the card, and correct the sentence to what happens.

    Serial: this card waits for #141 to merge (README) and for #139, the 18.1.0 upgrade (it touches src/objects/** and the bundles this card edits).


    Generated by Claude Code

  2. objectstack-fleet commented on Nov 2, 2026

    @objectstack-fleet
    Contributor

    Seat note, 2026-11-02T02:18Z: one more item folds into this card. #155 (fixed #150) changed two demo-fixture leads: the site environmental audit goes from 150 to 200 days, and calibration verification from 7 to 14. samples/catalog-items.csv still carries 150 and 7. That file is already in this card's surface (item 3), so align the two values there, or say in the PR why the import sample should differ from the demo.


    Generated by Claude Code

  3. objectstack-fleet commented on Nov 2, 2026

    @objectstack-fleet
    Contributor

    Claim: PM loop round 3
    Session: session_011HyoSXGRy6L13mYq1Hp4n1
    Account: os-warren (the seat's linked user; the card's assignee)
    Branch: claude/project-thread-3ttoat (platform-assigned card-thread branch, at origin/main 25743ed)
    Worktree: duly-issue-128
    Domain: n/a. objectstack-ai/duly is a single-lane app repo with no domain:*.
    Seat: repo:duly#1
    File surface: phrases: src/objects/task.object.ts, src/translations/zh-CN.ts, src/data/demo-history.ts, src/data/demo-zh.ts, src/views/task.view.ts (comment), src/hooks/task.hook.ts (comment only), test/invariants.test.ts, test/task-hook.test.ts, test/seed-locale.test.ts, docs/product/configurability.md (annotate), README.md. Positions, #120 and the #155 leads: samples/catalog-items.csv, samples/duties.csv, src/actions/catalog.actions.ts, test/import-samples.test.ts, docs/import/walkthrough.md (plus screenshots under docs/import/). Deck refs (#132 fold): src/dashboards/duty-health.dashboard.ts, src/datasets/duty-health.dataset.ts, test/dashboard.test.ts, test/views.test.ts, docs/template-checklist.md. New values: started / waiting_on_others / blocked / nearly_done. Stop on any breach until the seat posts a Claim amendment.
    Container & model: M, mode:thread, model: TIER_DEFAULT (hand-derived), effort: high
    Clause-②: no
    Metadata-protocol: none
    Responsibility: n/a. Template-neutral defaults, not a defect.
    Thread-read: 6567503373
    Premise: holds. main 25743ed still ships the customer-specific phrases (distributed = Passed down to the departments).
    Serial constraints cleared: #145 is on src/email-templates/**, test/email-templates.test.ts and test/i18n-coverage.test.ts; #148 is on src/flows/assignment.flow.ts and test/assignment-fanout.test.ts; #156 is on AGENTS.md. None intersects this surface. If the phrase change needs test/i18n-coverage.test.ts, stop and tell the seat (#145 holds it). #131 and #134 queue behind this card.


    Generated by Claude Code

  4. objectstack-fleet commented on Nov 2, 2026

    @objectstack-fleet
    Contributor

    repo:duly#1 · os-warren · session_01JQwxbZNXaxpetQJPoyEijj
    os-dev-report

    {
     "issue": 128,
     "status": "done",
     "branch": "claude/project-thread-3ttoat",
     "pr": "https://github.com/objectstack-ai/duly/pull/161",
     "session": "session_01JQwxbZNXaxpetQJPoyEijj",
     "premise_still_valid": true,
     "summary": "duly_task.progress options are now started / waiting_on_others / blocked / nearly_done (Started / Waiting on someone else / Blocked / Nearly done; 已开始 / 等待他人 / 受阻 / 即将完成), all describing open work so none competes with status or completed_late; demo rows show all four; README gains 'Change the progress phrases'. #120: samples/catalog-items.csv and both catalog action placeholders (en + zh-CN) use the demo's readable position spelling, and a new test holds the 20 shared catalog items to the demo's position and cadence. #155 leads aligned (audit 200, calibration 14, incl. the two calibration duty rows). #132 fold: all 37 deck/方案/pre-sales lines restated, checklist item 4 green. Walkthrough re-recorded on 18.2.0 with ten new screenshots: People import now creates accounts and sends set-password invitations; the 18.2 mapping step refuses main's duties.csv for lacking review_status, so the sample now carries it as the default would write it.",
     "tests": "All at 89bc661. pnpm test exit 0: Test Files 38 passed (38), Tests 938 passed (938); test/demo-calendar.test.ts 19/19 (366-day sweep). Ablation one leg each: samples/catalog-items.csv reverted to main -> 'spells every position the way the demo does' and the Plant compliance officer cadence rows red; samples/duties.csv reverted to main -> 'carries every field a row cannot be created without' red; both restored, import-samples 28/28. Browser: fresh pnpm demo / demo:zh, My week shows Blocked 1, Waiting on someone else 3, Started 1 (受阻 / 等待他人 / 已开始 in zh); no old phrase text. Import walk on clean pnpm dev 18.2.0: 6 + 12 + 21 + 19 created, 0 skipped; unresolved case 1 created 2 skipped. Screenshots: project folder duly-128-progress-phrases/ (My week, both locales) and docs/import/*.png.",
     "gates": "Local: pnpm validate exit 0 (Validation passed, 9 warnings, none on the touched surface); pnpm typecheck exit 0; pnpm test exit 0; pnpm build exit 0; exit codes captured before any pipe. duly has no dispatch-gates derivation (objectstack-only script); the four gates are this repo's ci.yml verify job. PR check-runs: verify in_progress at report time.",
     "dogfood_battery": "n/a — no ! in the PR title and no (narrowing) arm",
     "mcp_calls": "4 — issue_read x3 (get #128, get_comments #128, get #120), pull_request_read get #154, pull_request_read get_check_runs #161; no MCP write",
     "api_writes": "2 via fleet-write relay — POST /repos/objectstack-ai/duly/pulls (+ assignees leg os-warren, as the order asked), POST /repos/objectstack-ai/duly/issues/128/comments (this report); plus git push",
     "open_questions": [],
     "out_of_scope_findings": [
      "class: a · reach: Import UI on @objectstack 18.2.0, Duty list -> Import with main's samples/duties.csv: mapping step shows \"Can't continue — required field(s) not mapped: Review status (review_status)\" with Next disabled, although duly_duty.review_status has a record-derived defaultValue (record.source == 'self' ? 'to_review' : 'to_confirm') and the same file imported 19 rows on 17.2.0 · worked around in-surface by a review_status column in the sample (declared in the PR) · dedupe words: import wizard required defaultValue, required field not mapped, review_status import, mapping step blocks defaulted field · carrier: seat to file upstream (objectui import wizard)",
      "deviations: PR opened with assignees os-warren because the dispatch order asked for it, against os-dev rule 2 (no assignees on pr_create); no reviewer requested. Commit trailers are model-free per os-dev."
     ]
    }

    Generated by Claude Code

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

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions