File size: 2,390 Bytes
59db361
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
[
  {
    "name": "query_ledger",
    "sig": "query_ledger(filters | sql) -> rows[]",
    "desc": "Read-only query over the task's ledger. Row cap enforced — the cap is what makes search strategy observable."
  },
  {
    "name": "get_entry",
    "sig": "get_entry(entry_id) -> entry",
    "desc": "Full detail of one JE: lines, debits/credits, source, preparer, posting timestamp."
  },
  {
    "name": "list_documents",
    "sig": "list_documents(entry_id) -> doc_meta[]",
    "desc": "Support metadata only — type, filename, pages. Never content."
  },
  {
    "name": "open_document",
    "sig": "open_document(doc_id, page?) -> text",
    "desc": "Read a support document. Primary process signal: the evidence-access log separates a reasoned verdict from a lucky guess."
  },
  {
    "name": "get_policy",
    "sig": "get_policy(topic) -> policy_text",
    "desc": "Policy clause: capitalisation thresholds, approval limits, cut-off rules, accrual methodology."
  },
  {
    "name": "get_master_data",
    "sig": "get_master_data(type, id) -> record",
    "desc": "Chart of accounts, vendor master, period calendar, approval matrix, user roles. Returns status flags."
  },
  {
    "name": "recompute",
    "sig": "recompute(expression) -> value",
    "desc": "Deterministic calculator. Presence or absence of a recomputation is itself gradeable."
  },
  {
    "name": "aggregate",
    "sig": "aggregate(group_by, metric, filters) -> rows[]",
    "desc": "Population statistics: counts, sums, distributions, digit profiles. Required at L3, withheld at L1."
  },
  {
    "name": "compare_period",
    "sig": "compare_period(account, period_a, period_b) -> delta",
    "desc": "Prior-period comparison for reasonableness and back-testing."
  },
  {
    "name": "request_info",
    "sig": "request_info(entry_id, question) -> response | UNAVAILABLE",
    "desc": "Ask the simulated preparer for missing support. Some answers are UNAVAILABLE by design."
  },
  {
    "name": "disposition",
    "sig": "disposition(entry_id, verdict, issue_type, rationale, evidence_ids[]) -> ack",
    "desc": "Terminal per entry. verdict ∈ {approve, flag, reject, insufficient_evidence}. Citing an unopened document scores as fabrication."
  },
  {
    "name": "submit",
    "sig": "submit() -> end_episode",
    "desc": "Ends the episode. Undispositioned entries score as implicit approvals."
  }
]