Skip to content

Six app-source comments are framed as 「§09 asks for X and we cannot deliver it」 — §09 stopped asking on 2026-09-09 #76

Description

@zhuangjianguo

The defect

The 2026-09-09 maintainer ruling put 各段时长, per-type 「超 SLA」 and 各台阶平均停留 outside the V1.0 surface, and PR #40 (296fab8) wrote that into DESIGN.md §09. Six comments in src/ still describe the world as it was before that ruling — either quoting a §09 list that has since changed, or framing a limitation as a demand from §09 that the code cannot meet when §09 no longer makes the demand.

Their substance is correct. Every one of them explains something true about why a number is not delivered, and §09 now cites the same reasons. It is the framing that inverted: 「§09 要 X,我们做不到」 became false at the moment §09 stopped asking. That is why this is a reframe and ⛔ never a deletion.

# location what is stale
1 src/dashboards/executive.dashboard.ts:4–5 the header quotes §09's 管理层 list including 「审批瓶颈(各台阶平均停留)」. §09 replaced that brick with 各台阶路由量 and then explicitly declined the dwell-time metric. The file below already implements the routing bricks (route_legal_head · route_finance · route_executive · route_gm), so the header advertises something its own file does not build.
2 src/dashboards/executive.dashboard.ts:139 framed as §09 asking for 各台阶平均停留
3 src/dashboards/executive.dashboard.ts:141 same
4 src/dashboards/legal.dashboard.ts:143 framed as §09 asking for 超 SLA
5 src/dashboards/legal.dashboard.ts:182 framed as §09 asking for 平均周转
6 src/datasets/cycle-time.dataset.ts:7 framed as §09 asking for 各段时长

What to change

Reframe each so it describes what the code delivers and why that is the right thing to deliver, citing §09 as the authority that says so — rather than as a demand being failed.

  • Item 1 is the one with a concrete reader cost: a header that names a brick the file does not build. Prefer removing the quoted list and leaving a pointer, which is what PR Two app-source comments quote a DESIGN.md §09 that no longer says any of it — the stale-pointer pattern, pointing the other way #74 did for legal.dashboard.ts's header and for the same reason — a copy drifts, a pointer cannot. Read that header on main first and follow its shape.
  • Items 2–6 keep every measurement and every technical reason (ADR-0021, the semantic layer taking no SQL or expressions, Field.datetime stored as ISO text so AVG() returns an average year, sys_approval_request being empty under the standard demo data so F5's dwell times have no source at all). ⛔ Do not delete any of it — §09 itself now carries these arguments, so the comments and the document should read as agreeing, not as one complaining about the other.
  • Where a comment cites a platform tracker (objectstack-ai/objectstack#16737), keep it. ⚠️ And keep the point §09 makes and the comments should too: the platform's in-flight fix refuses the wrong path rather than providing date arithmetic, so durations remain uncomputable afterwards — they merely stop producing a plausible fake number.

Constraints

Acceptance

  • All four gates 0, exit codes captured before any pipe — and say plainly that they do cover these files.
  • Every claim in the rewritten comments traced to §09 as merged (main, post-30fd863) and to the code beside it, in a claim → reading table.
  • Verify the edits landed by before/after spelling counts — ⛔ never by an editor's exit code.
  • Re-run the sweep. PR Two app-source comments quote a DESIGN.md §09 that no longer says any of it — the stale-pointer pattern, pointing the other way #74 found these six by grepping src/ for comments quoting a DESIGN.md § list rather than pointing at one. Run it again on your tree and report what it returns, including anything the six above missed.
  • No changeset (this repo has no changeset gate). No browser run owed.

Explicitly out of scope, decided and recorded

PR #74 also found six comments that quote §09 or §05 accurately today: finance.dashboard.ts:4–5 · dashboards/index.ts:1 · contract.dataset.ts:4 · obligation.dataset.ts:4 · payment.dataset.ts:4 · pages/contract_detail.page.ts:132. Each was re-checked and each still matches word for word.

⛔ Do not convert them. They are the same latent trap, but rewriting six correct comments is churn, and the argument for a pointer is strongest exactly where a copy has already lost the race. If one of them drifts, that is a card then. Named here so the decision is on the record and the next dev does not re-discover them as unfiled work.

Provenance

Found by the dev on #71 while running the sweep PR #74's card mandated, reported as out-of-scope with the stale/accurate split already drawn, and correctly not ridden into that PR — a reframe of six comments is not a rider on a two-comment card. The split and the reasoning above are the dev's; the decision to file the first group and decline the second is the PM seat's.

Related

#71 / PR #74 (where this was found; the same fix applied to legal.dashboard.ts's header) · #63 / PR #70 (§09's own correction) · PR #40 / 296fab8 (the ruling that inverted the framing) · #31 (pm:blocked on objectstack#16737) · #26 · #54

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

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions