id: 0debc2878cec44c6a9690faa20c13868
parent_id: 02cc2977e1bd4292a75cc70ccd3b5f76
item_type: 1
item_id: a6768b6c7d2d4dbb855399468b9db6fa
item_updated_time: 1787937401151
title_diff: "[]"
body_diff: "[{\"diffs\":[[0,\"ommit: `\"],[-1,\"d2c33d5\"],[1,\"f38200f\"],[0,\"` on `ma\"]],\"start1\":211,\"start2\":211,\"length1\":23,\"length2\":23},{\"diffs\":[[0,\"ments.\\\n\\\n\"],[1,\"## **THE OPENUP WORK PRODUCT SET IS COMPLETE + AUDITED (f38200f)**\\\n\\\nVision, Use Case Model + Specifications, Supplementary Specifications,\\\nArchitecture Notebook, Test Cases, Project Plan (+ Process Tailoring),\\\nIteration Plan (I5), Iteration Assessment (I1-I4), Work Items List,\\\nRisk List. Audit pass 2026-08-28 evening: all five safe EA builders re-run\\\n(content-deterministic — JSON exports hash-identical after rebuild), all\\\ndocuments regenerated, one latent export bug fixed, new integrity gates added.\\\nOnly remaining optional envelope: test-script.docx.\\\n\\\n## Iteration I5 (2026-08-31 → 2026-09-11) — AGREED 2026-08-28\\\n\\\n- **WI-14 KLMS confirmation call** (week of 2026-08-31, PO + Clypeum):\\\n  report_usage semantics, scrapping notification, production signing key\\\n- **WI-15 SCRAP panel in ALL variants** (due 2026-09-11): warn user + explicit\\\n  confirmation; read out UID of placed fobs; notify KLMS about the scrapping —\\\n  likely the same call as the provisioning confirmation (report_usage)\\\n- **WI-16** UC-10 Scrap Key Fob in the EA model (scenario + traces + docs\\\n  pipeline) — ADD SURGICALLY, NOT via generate-usecase-model.ps1 (that wipes\\\n  the manual diagram layout)\\\n- **WI-17** re-ship variant zips to the remote machine + live verification\\\n- New risks recorded: accidental scrapping (mitigated by confirm dialog + UID\\\n  display), report_usage dependency (call before implementation)\\\n\\\n\"],[0,\"## What \"]],\"start1\":383,\"start2\":383,\"length1\":16,\"length2\":1409},{\"diffs\":[[0,\"s work; \"],[-1,\"**\"],[0,\"reader f\"]],\"start1\":2367,\"start2\":2367,\"length1\":18,\"length2\":16},{\"diffs\":[[0,\"ixed\"],[-1,\"** the\\\n  Provision/Re-install \\\"No PICC reader found\\\" (machine enumerates the ACR1281\\\n  without \\\"PICC\\\" in the name — reader list now logged at info for evidence)\"],[0,\"\\\n- F\"]],\"start1\":2392,\"start2\":2392,\"length1\":168,\"length2\":8},{\"diffs\":[[0,\" in \"],[-1,\"V\"],[0,\"al\"],[-1,\"idate / Production (Files) / Production (KLMS) /\\\n  single-fob Provision result grids (card read-back values, \"],[1,\"l result grids (\"],[0,\"MISS\"]],\"start1\":2418,\"start2\":2418,\"length1\":120,\"length2\":26},{\"diffs\":[[0,\"ail-fast)\\\n- \"],[-1,\"**\"],[0,\"Test reports\"]],\"start1\":2692,\"start2\":2692,\"length1\":26,\"length2\":24},{\"diffs\":[[0,\"orts\"],[-1,\" (2026-08-27, f6cc34a)**\"],[0,\": `p\"]],\"start1\":2712,\"start2\":2712,\"length1\":32,\"length2\":8},{\"diffs\":[[0,\".py`\"],[-1,\"\\\n  runs the full gate and emits\"],[1,\" (gate +\"],[0,\" Mar\"]],\"start1\":2754,\"start2\":2754,\"length1\":39,\"length2\":16},{\"diffs\":[[0,\"Markdown\"],[-1,\" + \"],[1,\"/\"],[0,\"PDF\"],[1,\"\\\n \"],[0,\" evidenc\"]],\"start1\":2767,\"start2\":2767,\"length1\":22,\"length2\":22},{\"diffs\":[[0,\"ence\"],[-1,\" reports to\\\n  `docs/test-reports/<date>_<commit>.{md,pdf}`. Policy:\"],[1,\";\"],[0,\" com\"]],\"start1\":2786,\"start2\":2786,\"length1\":75,\"length2\":9},{\"diffs\":[[0,\"e points\"],[-1,\".\"],[1,\")\"],[0,\"\\\n- **Ope\"]],\"start1\":2808,\"start2\":2808,\"length1\":17,\"length2\":17},{\"diffs\":[[0,\"8-28\"],[-1,\")**: envelope in `docs/openup/` —\\\n  EPF templates converted to Office (8 docx + 2 xlsx) in discipline folders\"],[1,\", complete + audited)**: all work products\\\n  in `docs/openup/`\"],[0,\", EA\"],[-1,\"\\\n \"],[0,\" mod\"]],\"start1\":2850,\"start2\":2850,\"length1\":123,\"length2\":74},{\"diffs\":[[0,\"px` \"],[-1,\"(root \\\"Key Fob Station\\\", 6 OpenUP\\\n  discipline packages + Process Tailoring placeholder).\\\n  **Vision DONE (3ab71ac)** via `scripts/generate-vision-doc.py`.\\\n  **Use Case Model DONE (8bcf84f, layout 9163e54)** via\\\n  `scripts/generate-usecase-model.ps1` (5 actors, 9 UCs, overview diagram;\\\n  manual auto-layout applied in EA).\\\n  **Use-Case Specifications DONE (f7b5405)**: scenarios in the model via\\\n  `scripts/generate-uc-scenarios.ps1` (30 scenarios / 72 steps), JSON export +\\\n  `scripts/generate-ucspec-doc.py` → combined specification docx.\\\n  **Supplementary Specifications DONE (c3e5f5b)**: 35 requirements in 8\\\n  categories as EA Requirement elements + 48 Trace connectors to UCs via\\\n  `scripts/generate-requirements-model.ps1`; export →\"],[1,\"as the\\\n  source of truth, JSON exports in `docs/openup/model/exports/`, generators in\\\n  `scripts/generate-*.{py,ps1}`. Iterations mapped: I1 bring-up (Jun),\\\n  I2 real HW (Aug 4-11), I3 KLMS integration/hardening (Aug 14-21),\\\n  I4 deployment/documentation (Aug 26-28), I5 planned (SCRAP + KLMS call).\\\n- **Audit findings (f38200f)**: export filtered to client-side traces for\"],[0,\"\\\n  \"],[-1,\"`\"],[0,\"supp\"]],\"start1\":2963,\"start2\":2963,\"length1\":752,\"length2\":384},{\"diffs\":[[0,\"ementary\"],[-1,\"-\"],[1,\" \"],[0,\"requirem\"]],\"start1\":3348,\"start2\":3348,\"length1\":17,\"length2\":17},{\"diffs\":[[0,\"ents\"],[-1,\".json`; `scripts/generate-supp-spec-doc.py` → docx\\\n  with per-category tables + UC coverage matrix. Every UC traced by ≥2\\\n  requirements (UC-06 KLMS production: 12).\\\n  **Architecture Notebook DONE (eb51e9f)**: analysis model via\\\n  `scripts/generate-analysis-model.ps1` (22 B/C/E classes — RUP tailoring\\\n  import, 5 UC realizations UC-02/05/06/07/08 with Realization connectors,\\\n  class diagrams); design model via `scripts/generate-design-model.ps1`\\\n  (11 crate components, runtime deps from Cargo.toml — dev-deps excluded,\\\n  verified 36 edges); `generate-arch-notebook-doc.py` → notebook docx\\\n  (10 EPF sections, 8 decisions D1-D8, 6 mechanisms, layer table, 11 figures;\\\n  generation-time cross-check model deps == Cargo runtime deps). Diagrams\\\n  exported as EA PDFs + pymupdf-rendered \"],[1,\" (incoming test-case traces had leaked into the\\\n  requirement→UC lists — latent until TCs existed); test-cases doc now verifies\\\n  claimed suite counts against the source at generation time; vision carries a\\\n  provenance line; risk 7 date hedged; render-diagram-pngs.py added (PDF→\"],[0,\"PNG\"],[-1,\"s.\"],[0,\"\\\n  \"],[-1,\"**Test Cases DONE (d2c33d5)**: 20 cases in the EA model\\\n  (`scripts/generate-testcases-model.ps1`) traced via 40 Trace connectors —\\\n  9 HW verification (EPF fields + status/evidence; TC-HW-09 honest: unit-passed,\\\n  on-target pending), 9 automated suites (counts source-verified: 105 tests =\\\n  98 #[test] + 7 #[tokio::test]), 2 quality gate (→CON-02/CON-05); export →\\\n  `test-cases.json`; `generate-test-cases-doc.py` → docx with summary, detail\\\n  and UC coverage matrix (all 9 UCs covered; UC-07 automated-only).\\\n  **Decisions**: no per-UC activity diagrams (scenarios carry the flows);\\\n  interaction views use the reviewed PlantUML diagrams. PSP deferred\"],[1,\"was manual); PM generator regeneration produces metadata-only churn on\\\n  unchanged files — restore those, commit only content changes\"],[0,\".\\\n\\\n#\"]],\"start1\":3365,\"start2\":3365,\"length1\":1458,\"length2\":427},{\"diffs\":[[0,\"g; c\"],[-1,\"reate models by copying\\\n  `C:\\\\Program Files (x86)\\\\Sparx Systems\\\\EA\\\\\"],[1,\"opy `\"],[0,\"EABa\"]],\"start1\":3894,\"start2\":3894,\"length1\":75,\"length2\":13},{\"diffs\":[[0,\"se.eapx`\"],[1,\" instead\"],[0,\"\\\n- Diagr\"]],\"start1\":3907,\"start2\":3907,\"length1\":16,\"length2\":24},{\"diffs\":[[0,\"x227\"],[-1,\" regardless of OpenDiagram/SaveDiagram/LayoutDiagram);\\\n  use `diagram.SaveAsPDF()` (renders correctly) + pymupdf for PNG\\\n- Scenario steps persist ONLY if `scenario.Update()` runs AGAIN after adding steps\\\n- Trace connector: EA stores Type=**Abstraction**, StereoType=**Trace** — filter\\\n  by Stereotype; and `element.Connectors` needs `.Refresh()` before first read\\\n- Dependency connectors appear in BOTH ends' collections — export only from the\\\n  client side (ClientID == element) or you get self-loops/duplicates\\\n- COM wrappers go STALE across package churn — re-fetch packages/elements fresh\\\n  (via the parent collection) instead of caching; `GetByName` on Elements can\\\n  return null (guard it)\\\n- `GenerateDiagramFromScenario` unusable via COM (undocumented signature)\\\n- `$app.Quit()` hangs frequently → scripts record baseline EA pids and kill their\\\n  own EA processes in `finally`; if a run times out, kill windowless EA pids from\\\n  bash before the next EA run (a locked .eapx blocks `OpenFile`)\\\n- Re-running `generate-usecase-model.ps1` wipes the manual diagram layout —\\\n  scenario/requirement/export scripts are safe (elements only)\"],[1,\"); use `diagram.SaveAsPDF()` + `scripts/render-diagram-pngs.py`\\\n- Scenario steps persist ONLY if `scenario.Update()` runs AGAIN after adding steps\\\n- **Trace/Dependency connectors appear in BOTH ends' collections — always filter\\\n  to the client side (ClientID == element) when exporting** (bit us twice)\\\n- `element.Connectors` needs `.Refresh()` before first read\\\n- COM wrappers go STALE across package churn — re-fetch fresh; guard `GetByName`\\\n- `GenerateDiagramFromScenario` unusable via COM (undocumented signature)\\\n- **EA license/COM contention: windowless orphan EA.exe processes block new\\\n  automation instances (OpenFile/App creation hangs silently). Kill windowless\\\n  EA pids BEFORE each EA script run; leave a cleanup gap between consecutive\\\n  EA builders.** (Two week-old orphans from Aug 18/19 caused a 10-min hang\\\n  during the audit.)\\\n- Re-running `generate-usecase-model.ps1` wipes the manual diagram layout\"],[0,\"\\\n\\\n##\"]],\"start1\":4092,\"start2\":4092,\"length1\":1145,\"length2\":927},{\"diffs\":[[0,\"wins\"],[-1,\"\\\n- Runs WITHOUT client cert (everything except KLMS Connect)\"],[0,\"\\\n\\\n##\"]],\"start1\":5414,\"start2\":5414,\"length1\":68,\"length2\":8},{\"diffs\":[[0,\". **\"],[-1,\"OpenUP authoring — final stretch**: Project Plan + **Process Tailoring note**\\\n   (as-executed order + RUP analysis-model import + no-activity-diagram\\\n   decision), Iteration Plans + Work Items List + Risk List from git\\\n   history/audit note (Excel direct-filled), Iteration Assessment. Then the\\\n   OpenUP work product set is complete.\\\n2. Re-ship variant zips (8bac041) to the remote machine; verify reader fallback +\\\n   FESN/SPID display live\\\n3. External items (audit note): C1 CA cert, CID header, production signing-key\\\n   confirmation, checksum spec, report_usage semantics\\\n4. Slideset assembly (SVGs in docs/diagrams/ — reviewed & approved)\\\n\\\n## Operations quick reference\\\n\\\n- **Workspace**: `D:\\\\Development\\\\Workspaces\\\\\rust-workspace\\\\keyfob-station`\\\n- **Dev run**: `kfs-dev.bat` / `RUST_LOG=info,kf_dev_station=debug cargo run -p kf-dev-station`\\\n  (tracing → stderr; run from a console)\\\n- **Package**: `powershell -File scripts\\\\package-deployment.ps1` (3 release builds;\\\n  incremental if nothing changed)\\\n- **Test report**: `python scripts/generate-test-report.py` → docs/test-reports/\\\n  (Markdown + PDF; run at release points)\\\n- **User docs**: regenerate via `python scripts/generate-user-docs.py` → `docs/user/*.docx`\\\n- **OpenUP pipeline**: Vision `scripts\\\\generate-vision-doc.py`; UC model\\\n  `scripts\\\\generate-usecase-model.ps1` (wipes layout!); UC scenarios\\\n  `scripts\\\\generate-uc-scenarios.ps1`; requirements\\\n  `scripts\\\\generate-requirements-model.ps1`; analysis\\\n  `scripts\\\\generate-analysis-model.ps1`; design\\\n  `scripts\\\\generate-design-model.ps1`; test cases\\\n  `scripts\\\\generate-testcases-model.ps1`; model JSON export\\\n  `scripts\\\\export-model-json.ps1` (UC + supplementary + architecture + test\\\n  cases JSONs); docs via `generate-ucspec-doc.py` / `generate-supp-spec-doc.py` /\\\n  `generate-arch-notebook-doc.py` / `generate-test-cases-doc.py` (notebook\\\n  requires pymupdf); model `docs\\\\openup\\\\model\\\\keyfob-station.eapx` (EA 15.2);\\\n  envelope docs in `docs\\\\openup\\\\{requirements,analysis-design,project-management,test}`\\\n- **Diagrams**: `docs\\\\diagrams\\\\{KDF,Transport,HSM_Backup}\\\\` (SVG+PNG for slides);\\\n  re-render: `python scripts/render-puml.py <folder>` (needs internet — PlantUML server)\\\n- **Config**: `data\\\\klms-config.toml`; TLS material in `data\\\\tls\\\\` (gitignored; passphrase\\\n \"],[1,\"I5 execution** (see above; SCRAP latest 2026-09-11). After the KLMS call:\\\n   update report_usage/CID/checksum semantics into the supplementary\\\n   requirements (generator script) + new test cases for SCRAP.\\\n2. External items (audit note): C1 CA cert, CID header, production signing-key\\\n   confirmation, checksum spec, report_usage semantics (→ WI-14 covers the call)\\\n3. Slideset assembly (SVGs in docs/diagrams/ — reviewed & approved)\\\n\\\n## Operations quick reference\\\n\\\n- **Workspace**: `D:\\\\Development\\\\Workspaces\\\\\rust-workspace\\\\keyfob-station`\\\n- **Dev run**: `kfs-dev.bat` / `RUST_LOG=info,kf_dev_station=debug cargo run -p kf-dev-station`\\\n- **Package**: `powershell -File scripts\\\\package-deployment.ps1` (3 release builds)\\\n- **Test report**: `python scripts/generate-test-report.py` → docs/test-reports/\\\n- **User docs**: `python scripts/generate-user-docs.py` → `docs/user/*.docx`\\\n- **OpenUP pipeline** (regenerates everything; kill windowless EA pids first,\\\n  gap between EA steps): vision → uc-model (wipes layout!) → uc-scenarios →\\\n  requirements → analysis → design → test-cases; `scripts\\\\export-model-json.ps1`\\\n  (4 JSONs); docs: ucspec / supp-spec / arch-notebook / test-cases /\\\n  pm-docs; diagrams: `scripts\\\\\render-diagram-pngs.py` (needs pymupdf)\\\n- **Diagrams**: `docs\\\\diagrams\\\\{KDF,Transport,HSM_Backup}\\\\`; re-render:\\\n  `python scripts/render-puml.py <folder>` (needs internet)\\\n- **Config**: `data\\\\klms-config.toml`; TLS material in `data\\\\tls\\\\` (gitignored;\\\n  passphrase\"],[0,\" `IK\"]],\"start1\":5738,\"start2\":5738,\"length1\":2298,\"length2\":1485},{\"diffs\":[[0,\"once\"],[-1,\" (see Windows Configuration note)\"]],\"start1\":7445,\"start2\":7445,\"length1\":37,\"length2\":4}]"
metadata_diff: {"new":{},"deleted":[]}
encryption_cipher_text: 
encryption_applied: 0
updated_time: 2026-08-28T17:18:34.916Z
created_time: 2026-08-28T17:18:34.916Z
is_locked: 0
type_: 13