2026-07-30 20:58:25 +02:00
|
|
|
|
---
|
|
|
|
|
|
id: CE-WP-0012
|
|
|
|
|
|
type: workplan
|
|
|
|
|
|
title: "Attribute value types — time, datetime, amount, one-of, some-of"
|
|
|
|
|
|
domain: infotech
|
|
|
|
|
|
repo: citation-evidence
|
|
|
|
|
|
repo_id: a677c189-b4e2-4f2a-9e48-faa482c277e6
|
|
|
|
|
|
topic_slug: citation_evidence_mvp
|
|
|
|
|
|
topic_id: cee7bedf-2b48-46ef-8601-006474f2ad7a
|
2026-07-30 21:05:44 +02:00
|
|
|
|
status: finished
|
2026-07-30 20:58:25 +02:00
|
|
|
|
owner: codex
|
|
|
|
|
|
created: "2026-07-30"
|
|
|
|
|
|
updated: "2026-07-30"
|
|
|
|
|
|
depends_on_workplan: CE-WP-0011
|
|
|
|
|
|
planning_order: 12
|
|
|
|
|
|
planning_priority: high
|
|
|
|
|
|
spec_refs:
|
|
|
|
|
|
- wiki/AttributeValueTypes-proposal.md
|
|
|
|
|
|
- workplans/CE-WP-0010-annotate-attributes-ux.md
|
|
|
|
|
|
- ../info-tech-canon/seeds/InfoTechCanonDataModel_RC1_seed.md
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
# CE-WP-0012 — Attribute Value Types
|
|
|
|
|
|
|
|
|
|
|
|
Extend Capture attributes beyond `text` / `textarea` / `date` with the types
|
|
|
|
|
|
needed for real evidence work, aligned with a **canonical AttributeValueType
|
|
|
|
|
|
catalog** (proposed under InfoTechCanon; interim consumer profile in
|
|
|
|
|
|
`wiki/AttributeValueTypes-proposal.md`).
|
|
|
|
|
|
|
|
|
|
|
|
## Research summary (locked finding)
|
|
|
|
|
|
|
|
|
|
|
|
InfoTechCanon **Data Model** already defines **Attribute**, **Field**,
|
|
|
|
|
|
**DataType**, **Representation**, and **CodeList**, but **DataType is a stub**
|
|
|
|
|
|
and there is **no closed catalog** of application value types. Representation
|
|
|
|
|
|
only lists open examples (`string`, `date`, `timestamp`, `code`, …).
|
|
|
|
|
|
|
|
|
|
|
|
Therefore: establish the catalog in InfoTechCanon (ITC-WP-0013), implement UI
|
|
|
|
|
|
and persistence here as a **consumer**.
|
|
|
|
|
|
|
|
|
|
|
|
## User-requested types (MVP slice)
|
|
|
|
|
|
|
|
|
|
|
|
| Type | Purpose |
|
|
|
|
|
|
|------|---------|
|
|
|
|
|
|
| `time` | Clock time without date |
|
|
|
|
|
|
| `datetime` | Date + time |
|
|
|
|
|
|
| `amount` | Quantity with currency (or unit) |
|
|
|
|
|
|
| `one-of` | Single choice from options |
|
|
|
|
|
|
| `some-of` | Multi choice from options |
|
|
|
|
|
|
|
|
|
|
|
|
Keep existing: `text`, `textarea` (alias `text-long`), `date`.
|
|
|
|
|
|
|
|
|
|
|
|
## Goals
|
|
|
|
|
|
|
|
|
|
|
|
1. Schema + UI support for the MVP types above.
|
|
|
|
|
|
2. Option lists for `one-of` / `some-of` editable in Capture.
|
|
|
|
|
|
3. Wire encoding documented and round-tripped in capture-state + tests.
|
|
|
|
|
|
4. No fork of type ids: prefer names from `wiki/AttributeValueTypes-proposal.md`
|
|
|
|
|
|
once ITC catalog exists; until then use the proposal as interim canon.
|
|
|
|
|
|
|
|
|
|
|
|
## Non-goals
|
|
|
|
|
|
|
|
|
|
|
|
- Full ISO 11179 registry product.
|
|
|
|
|
|
- Arbitrary JSON Schema forms.
|
|
|
|
|
|
- Server-side validation service.
|
|
|
|
|
|
- Publishing a shared npm package in this workplan (may follow).
|
|
|
|
|
|
|
|
|
|
|
|
## Dependency order
|
|
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
T01 (decide wire encodings + finalize interim catalog in wiki)
|
|
|
|
|
|
└─ T02 (extend FormFieldSchema + FieldDefinitionForm types)
|
|
|
|
|
|
└─ T03 (widgets: time, datetime, amount)
|
|
|
|
|
|
└─ T04 (widgets: one-of, some-of + options editor)
|
|
|
|
|
|
└─ T05 (persist options; migrate legacy textarea if needed)
|
|
|
|
|
|
└─ T06 (tests + demo schema examples)
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
Parallel: **ITC-WP-0013** formalizes the catalog in info-tech-canon; CE may
|
|
|
|
|
|
ship T01–T06 against the wiki proposal and remap ids if ITC renames.
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
## T01 — Finalize interim catalog + encodings
|
|
|
|
|
|
|
|
|
|
|
|
```task
|
|
|
|
|
|
id: CE-WP-0012-T01
|
2026-07-30 21:05:44 +02:00
|
|
|
|
status: done
|
2026-07-30 20:58:25 +02:00
|
|
|
|
priority: high
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
Resolve decision asks in `wiki/AttributeValueTypes-proposal.md` §8 with
|
|
|
|
|
|
operator; freeze MVP wire forms for amount / one-of / some-of.
|
|
|
|
|
|
|
|
|
|
|
|
**Acceptance:** proposal §4 marked “accepted for CE MVP” (or amended).
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
## T02 — Schema extension
|
|
|
|
|
|
|
|
|
|
|
|
```task
|
|
|
|
|
|
id: CE-WP-0012-T02
|
2026-07-30 21:05:44 +02:00
|
|
|
|
status: done
|
2026-07-30 20:58:25 +02:00
|
|
|
|
priority: high
|
|
|
|
|
|
depends_on: [T01]
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
Extend `FormFieldSchema` / `FieldType` in evidence-binder:
|
|
|
|
|
|
|
|
|
|
|
|
- add `time`, `datetime`, `amount`, `one-of`, `some-of`
|
|
|
|
|
|
- optional `options?: { id, label }[]` for choice types
|
|
|
|
|
|
- optional amount metadata (default currency) if needed
|
|
|
|
|
|
|
|
|
|
|
|
**Acceptance:** typecheck green; FieldDefinitionForm lists new types.
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
## T03 — Scalar widgets (time, datetime, amount)
|
|
|
|
|
|
|
|
|
|
|
|
```task
|
|
|
|
|
|
id: CE-WP-0012-T03
|
2026-07-30 21:05:44 +02:00
|
|
|
|
status: done
|
2026-07-30 20:58:25 +02:00
|
|
|
|
priority: high
|
|
|
|
|
|
depends_on: [T02]
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
Render HTML `time`, `datetime-local` (or split date+time), and amount UI.
|
|
|
|
|
|
Values persist as strings (or structured JSON for amount per T01).
|
|
|
|
|
|
|
|
|
|
|
|
**Acceptance:** add/edit/value round-trip for each type in DOM tests.
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
## T04 — Choice widgets (one-of, some-of)
|
|
|
|
|
|
|
|
|
|
|
|
```task
|
|
|
|
|
|
id: CE-WP-0012-T04
|
2026-07-30 21:05:44 +02:00
|
|
|
|
status: done
|
2026-07-30 20:58:25 +02:00
|
|
|
|
priority: high
|
|
|
|
|
|
depends_on: [T02]
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
- `one-of`: select or radio
|
|
|
|
|
|
- `some-of`: checkbox group
|
|
|
|
|
|
- options editor when defining the attribute
|
|
|
|
|
|
|
|
|
|
|
|
**Acceptance:** create attribute with options, select values, persist.
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
## T05 — Capture-state compatibility
|
|
|
|
|
|
|
|
|
|
|
|
```task
|
|
|
|
|
|
id: CE-WP-0012-T05
|
2026-07-30 21:05:44 +02:00
|
|
|
|
status: done
|
2026-07-30 20:58:25 +02:00
|
|
|
|
priority: medium
|
|
|
|
|
|
depends_on: [T03, T04]
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
- load/save options in capture-state
|
|
|
|
|
|
- accept legacy sessions without options
|
|
|
|
|
|
- document amount/some-of JSON in capture-persistence comments
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
## T06 — Tests + demo attributes
|
|
|
|
|
|
|
|
|
|
|
|
```task
|
|
|
|
|
|
id: CE-WP-0012-T06
|
2026-07-30 21:05:44 +02:00
|
|
|
|
status: done
|
2026-07-30 20:58:25 +02:00
|
|
|
|
priority: medium
|
|
|
|
|
|
depends_on: [T05]
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
- unit/DOM coverage for new types
|
|
|
|
|
|
- optional demo schema fields exercising amount + one-of
|
|
|
|
|
|
- `pnpm test` green
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
## Out of scope / follow-ups
|
|
|
|
|
|
|
|
|
|
|
|
- Align TypeScript const enum with published ITC YAML.
|
|
|
|
|
|
- Evidence extraction helpers that suggest amount/date from PDF quotes.
|
|
|
|
|
|
- Validation constraints (min/max, regex) as first-class UI.
|