diff --git a/scripts/sdlc-delivery/convert-to-docx.py b/scripts/sdlc-delivery/convert-to-docx.py
new file mode 100644
index 0000000..ae08957
--- /dev/null
+++ b/scripts/sdlc-delivery/convert-to-docx.py
@@ -0,0 +1,57 @@
+#!/usr/bin/env python3
+"""Convert the rendered delivery package from PDF to Word.
+
+The work products are authored in Markdown and rendered to PDF by
+render-sdlc.mjs; the .docx beside each .pdf is a layout reconstruction of that
+PDF, so the Word file keeps the page the reviewer signed off rather than being
+laid out a second time from the source.
+
+Requires pdf2docx: pip install -r requirements.txt
+
+Usage:
+ convert-to-docx.py DELIVERY_DIRECTORY [PDF…]
+"""
+import sys
+import os
+from pathlib import Path
+
+from pdf2docx import Converter
+
+
+def convert(pdf: Path) -> Path:
+ docx = pdf.with_suffix('.docx')
+ converter = Converter(str(pdf))
+ try:
+ converter.convert(str(docx))
+ finally:
+ converter.close()
+ return docx
+
+
+def main(argv):
+ if not argv:
+ raise SystemExit(__doc__)
+
+ root = Path(argv[0])
+ pdfs = [Path(p) for p in argv[1:]] or sorted(root.rglob('*.pdf'))
+ if not pdfs:
+ raise SystemExit(f'No PDFs found under {root}')
+
+ failures = []
+ for index, pdf in enumerate(pdfs, start=1):
+ try:
+ docx = convert(pdf)
+ print(f'[{index}/{len(pdfs)}] {docx.relative_to(root)}')
+ except Exception as error: # noqa: BLE001 - reported, not swallowed
+ failures.append((pdf, error))
+ print(f'[{index}/{len(pdfs)}] FAILED {pdf.relative_to(root)}: {error}', file=sys.stderr)
+
+ print(f'{len(pdfs) - len(failures)}/{len(pdfs)} documents converted')
+ if failures:
+ raise SystemExit(1)
+
+
+if __name__ == '__main__':
+ # pdf2docx is chatty; the per-document progress above is enough.
+ os.environ.setdefault('PDF2DOCX_QUIET', '1')
+ main(sys.argv[1:])
diff --git a/scripts/sdlc-delivery/requirements.txt b/scripts/sdlc-delivery/requirements.txt
new file mode 100644
index 0000000..028fc32
--- /dev/null
+++ b/scripts/sdlc-delivery/requirements.txt
@@ -0,0 +1 @@
+pdf2docx>=0.5.8
diff --git a/scripts/sdlc-delivery/verify-content.mjs b/scripts/sdlc-delivery/verify-content.mjs
index 03c6049..1881217 100644
--- a/scripts/sdlc-delivery/verify-content.mjs
+++ b/scripts/sdlc-delivery/verify-content.mjs
@@ -2,34 +2,24 @@ import { execFile } from 'node:child_process';
import fs from 'node:fs/promises';
import path from 'node:path';
import { promisify } from 'node:util';
+import { inflateRawSync } from 'node:zlib';
const execFileAsync = promisify(execFile);
-function isTableLine(line) {
- return /^\|.*\|\s*$/.test(line.trim());
-}
-
-function tableCells(line) {
- return line.trim().slice(1, -1).split('|').map((cell) => cell.trim());
-}
-
-function isSeparator(cells) {
- return cells.every((cell) => /^:?-{3,}:?$/.test(cell));
-}
-
function extractDocumentContent(markdown) {
const titleMatch = markdown.match(/^#\s+.+\n+/m);
const body = markdown
.slice((titleMatch?.index ?? 0) + (titleMatch?.[0].length ?? 0))
.replace(/^\s*$/m, '')
- .replace(/
/gi, ' '); // markup, not document text
+ .replace(/
/gi, ' ') // markup, not document text
+ // List markers are drawn by the renderer, not stored as text: the browser
+ // paints them from
/ and Word from numbering.xml, so they are
+ // markup here too and must not be expected in the extracted text.
+ .replace(/^[-*]\s+/gm, '')
+ .replace(/^\d+\.\s+/gm, '');
return { body, fields: {} };
}
-function words(text) {
- return new Set((text.normalize('NFC').toLocaleLowerCase().match(/[\p{L}\p{N}]+/gu) ?? []));
-}
-
function compact(text) {
return text.normalize('NFC').toLocaleLowerCase().replace(/[^\p{L}\p{N}]/gu, '');
}
@@ -49,42 +39,98 @@ async function pdfText(pdf) {
return stdout;
}
+// A .docx is a zip; only one member is needed, so it is read here rather than
+// taking a dependency for it. Entries are located through the central
+// directory, then inflated from their own local header.
+function readZipEntry(buffer, name) {
+ const endOfDirectory = buffer.lastIndexOf(Buffer.from([0x50, 0x4b, 0x05, 0x06]));
+ if (endOfDirectory < 0) throw new Error('not a zip archive');
+ const entries = buffer.readUInt16LE(endOfDirectory + 10);
+ let cursor = buffer.readUInt32LE(endOfDirectory + 16);
+
+ for (let index = 0; index < entries; index += 1) {
+ if (buffer.readUInt32LE(cursor) !== 0x02014b50) throw new Error('damaged central directory');
+ const method = buffer.readUInt16LE(cursor + 10);
+ const compressedSize = buffer.readUInt32LE(cursor + 20);
+ const nameLength = buffer.readUInt16LE(cursor + 28);
+ const extraLength = buffer.readUInt16LE(cursor + 30);
+ const commentLength = buffer.readUInt16LE(cursor + 32);
+ const localOffset = buffer.readUInt32LE(cursor + 42);
+ const entryName = buffer.toString('utf8', cursor + 46, cursor + 46 + nameLength);
+
+ if (entryName === name) {
+ const localName = buffer.readUInt16LE(localOffset + 26);
+ const localExtra = buffer.readUInt16LE(localOffset + 28);
+ const start = localOffset + 30 + localName + localExtra;
+ const data = buffer.subarray(start, start + compressedSize);
+ return method === 0 ? Buffer.from(data) : inflateRawSync(data);
+ }
+ cursor += 46 + nameLength + extraLength + commentLength;
+ }
+ throw new Error(`${name} not found in archive`);
+}
+
+async function docxText(docx) {
+ const xml = readZipEntry(await fs.readFile(docx), 'word/document.xml').toString('utf8');
+ // Paragraph and row ends are text boundaries; only carries characters.
+ return xml
+ .replace(/<\/w:p>|<\/w:tr>|]*\/>|]*\/>/g, '\n')
+ .replace(/]*>([^<]*)<\/w:t>/g, '$1')
+ .replace(/<[^>]+>/g, '')
+ .replaceAll('&', '&').replaceAll('<', '<').replaceAll('>', '>')
+ .replaceAll('"', '"').replaceAll(''', "'");
+}
+
+const READERS = { pdf: pdfText, docx: docxText };
+
+function tally(text) {
+ const counts = new Map();
+ for (const character of compact(text)) counts.set(character, (counts.get(character) ?? 0) + 1);
+ return counts;
+}
+
async function main() {
- const [sourceRoot, deliveryRoot] = process.argv.slice(2);
- if (!sourceRoot || !deliveryRoot) throw new Error('Usage: verify-content.mjs SOURCE_DIRECTORY DELIVERY_DIRECTORY');
+ const [sourceRoot, deliveryRoot, ...requested] = process.argv.slice(2);
+ if (!sourceRoot || !deliveryRoot) throw new Error('Usage: verify-content.mjs SOURCE_DIRECTORY DELIVERY_DIRECTORY [FORMAT…]');
+ const formats = requested.length ? requested : Object.keys(READERS);
+ const unknown = formats.filter((format) => !READERS[format]);
+ if (unknown.length) throw new Error(`Unknown format(s): ${unknown.join(', ')}`);
const sources = (await markdownFiles(sourceRoot)).sort();
- const failures = [];
+ let failed = false;
- for (const source of sources) {
- const relative = path.relative(sourceRoot, source);
- const pdf = path.join(deliveryRoot, relative.replace(/\.md$/, '.pdf'));
- const [markdown, extracted] = await Promise.all([fs.readFile(source, 'utf8'), pdfText(pdf)]);
- const { body } = extractDocumentContent(markdown);
- // Thai has no word spaces, so a run can wrap several times inside a narrow
- // table cell and reach the extracted text as separate fragments. Coverage is
- // therefore checked by character count: every character of the source must
- // appear in the PDF at least as many times. Clipped or dropped text loses
- // glyphs and still fails; re-wrapping does not.
- const tally = (text) => {
- const counts = new Map();
- for (const character of compact(text)) counts.set(character, (counts.get(character) ?? 0) + 1);
- return counts;
- };
- const rendered = tally(extracted);
- const missing = [...tally(body)]
- .filter(([character, count]) => (rendered.get(character) ?? 0) < count)
- .map(([character, count]) => `${character}\u00d7${count - (rendered.get(character) ?? 0)}`);
- if (missing.length) failures.push(`${relative}: missing ${missing.slice(0, 12).join(', ')}${missing.length > 12 ? ', …' : ''}`);
+ for (const format of formats) {
+ const failures = [];
+ for (const source of sources) {
+ const relative = path.relative(sourceRoot, source);
+ const rendered = path.join(deliveryRoot, relative.replace(/\.md$/, `.${format}`));
+ const [markdown, extracted] = await Promise.all([
+ fs.readFile(source, 'utf8'),
+ READERS[format](rendered)
+ ]);
+ const { body } = extractDocumentContent(markdown);
+ // Thai has no word spaces, so a run can wrap several times inside a narrow
+ // table cell and reach the extracted text as separate fragments. Coverage is
+ // therefore checked by character count: every character of the source must
+ // appear in the rendering at least as many times. Clipped or dropped text
+ // loses glyphs and still fails; re-wrapping does not.
+ const counts = tally(extracted);
+ const missing = [...tally(body)]
+ .filter(([character, count]) => (counts.get(character) ?? 0) < count)
+ .map(([character, count]) => `${character}×${count - (counts.get(character) ?? 0)}`);
+ if (missing.length) failures.push(`${relative}: missing ${missing.slice(0, 12).join(', ')}${missing.length > 12 ? ', …' : ''}`);
+ }
+
+ if (failures.length) {
+ failed = true;
+ console.error(`Content coverage failed for ${failures.length}/${sources.length} ${format.toUpperCase()}s:`);
+ failures.forEach((failure) => console.error(`- ${failure}`));
+ } else {
+ console.log(`Content coverage passed: ${sources.length}/${sources.length} ${format.toUpperCase()}s.`);
+ }
}
- if (failures.length) {
- console.error(`Content coverage failed for ${failures.length}/${sources.length} PDFs:`);
- failures.forEach((failure) => console.error(`- ${failure}`));
- process.exit(1);
- }
-
- console.log(`Content coverage passed: ${sources.length}/${sources.length} PDFs.`);
+ if (failed) process.exit(1);
}
main().catch((error) => { console.error(error); process.exit(1); });
diff --git a/sdlc-delivery/1-PM Process (10 Work Product)/1.Statement of Work/200-WMS-26-001-00 Statement of Work 25690105 V1.0 ApS.docx b/sdlc-delivery/1-PM Process (10 Work Product)/1.Statement of Work/200-WMS-26-001-00 Statement of Work 25690105 V1.0 ApS.docx
new file mode 100644
index 0000000..624535c
Binary files /dev/null and b/sdlc-delivery/1-PM Process (10 Work Product)/1.Statement of Work/200-WMS-26-001-00 Statement of Work 25690105 V1.0 ApS.docx differ
diff --git a/sdlc-delivery/1-PM Process (10 Work Product)/10.Project Repository (Backup)/200-WMS-26-001-00 Project Repository Backup 25690824 V1.0 ThS.docx b/sdlc-delivery/1-PM Process (10 Work Product)/10.Project Repository (Backup)/200-WMS-26-001-00 Project Repository Backup 25690824 V1.0 ThS.docx
new file mode 100644
index 0000000..f2151c9
Binary files /dev/null and b/sdlc-delivery/1-PM Process (10 Work Product)/10.Project Repository (Backup)/200-WMS-26-001-00 Project Repository Backup 25690824 V1.0 ThS.docx differ
diff --git a/sdlc-delivery/1-PM Process (10 Work Product)/2.Project Plan/1-Work Schedule/200-WMS-26-001-00 Work Schedule 25690213 V1.0 ApS.docx b/sdlc-delivery/1-PM Process (10 Work Product)/2.Project Plan/1-Work Schedule/200-WMS-26-001-00 Work Schedule 25690213 V1.0 ApS.docx
new file mode 100644
index 0000000..eb882f0
Binary files /dev/null and b/sdlc-delivery/1-PM Process (10 Work Product)/2.Project Plan/1-Work Schedule/200-WMS-26-001-00 Work Schedule 25690213 V1.0 ApS.docx differ
diff --git a/sdlc-delivery/1-PM Process (10 Work Product)/2.Project Plan/2-Software Project Plan/200-WMS-26-001-00 Software Project Plan 25690213 V1.0 ApS.docx b/sdlc-delivery/1-PM Process (10 Work Product)/2.Project Plan/2-Software Project Plan/200-WMS-26-001-00 Software Project Plan 25690213 V1.0 ApS.docx
new file mode 100644
index 0000000..8633477
Binary files /dev/null and b/sdlc-delivery/1-PM Process (10 Work Product)/2.Project Plan/2-Software Project Plan/200-WMS-26-001-00 Software Project Plan 25690213 V1.0 ApS.docx differ
diff --git a/sdlc-delivery/1-PM Process (10 Work Product)/2.Project Plan/3-Customer Requirement/200-WMS-26-001-00 Customer Requirements 25690206 V1.0 NoC.docx b/sdlc-delivery/1-PM Process (10 Work Product)/2.Project Plan/3-Customer Requirement/200-WMS-26-001-00 Customer Requirements 25690206 V1.0 NoC.docx
new file mode 100644
index 0000000..c5f47e7
Binary files /dev/null and b/sdlc-delivery/1-PM Process (10 Work Product)/2.Project Plan/3-Customer Requirement/200-WMS-26-001-00 Customer Requirements 25690206 V1.0 NoC.docx differ
diff --git a/sdlc-delivery/1-PM Process (10 Work Product)/3.Progress Status Record/200-WMS-26-001-00 Progress Status Record 25690109 V1.0 ApS.docx b/sdlc-delivery/1-PM Process (10 Work Product)/3.Progress Status Record/200-WMS-26-001-00 Progress Status Record 25690109 V1.0 ApS.docx
new file mode 100644
index 0000000..1329f72
Binary files /dev/null and b/sdlc-delivery/1-PM Process (10 Work Product)/3.Progress Status Record/200-WMS-26-001-00 Progress Status Record 25690109 V1.0 ApS.docx differ
diff --git a/sdlc-delivery/1-PM Process (10 Work Product)/3.Progress Status Record/200-WMS-26-001-00 Progress Status Record 25690123 V1.0 ApS.docx b/sdlc-delivery/1-PM Process (10 Work Product)/3.Progress Status Record/200-WMS-26-001-00 Progress Status Record 25690123 V1.0 ApS.docx
new file mode 100644
index 0000000..b57cc47
Binary files /dev/null and b/sdlc-delivery/1-PM Process (10 Work Product)/3.Progress Status Record/200-WMS-26-001-00 Progress Status Record 25690123 V1.0 ApS.docx differ
diff --git a/sdlc-delivery/1-PM Process (10 Work Product)/3.Progress Status Record/200-WMS-26-001-00 Progress Status Record 25690206 V1.0 ApS.docx b/sdlc-delivery/1-PM Process (10 Work Product)/3.Progress Status Record/200-WMS-26-001-00 Progress Status Record 25690206 V1.0 ApS.docx
new file mode 100644
index 0000000..1f11cc9
Binary files /dev/null and b/sdlc-delivery/1-PM Process (10 Work Product)/3.Progress Status Record/200-WMS-26-001-00 Progress Status Record 25690206 V1.0 ApS.docx differ
diff --git a/sdlc-delivery/1-PM Process (10 Work Product)/3.Progress Status Record/200-WMS-26-001-00 Progress Status Record 25690218 V1.0 ApS.docx b/sdlc-delivery/1-PM Process (10 Work Product)/3.Progress Status Record/200-WMS-26-001-00 Progress Status Record 25690218 V1.0 ApS.docx
new file mode 100644
index 0000000..c8d5f33
Binary files /dev/null and b/sdlc-delivery/1-PM Process (10 Work Product)/3.Progress Status Record/200-WMS-26-001-00 Progress Status Record 25690218 V1.0 ApS.docx differ
diff --git a/sdlc-delivery/1-PM Process (10 Work Product)/3.Progress Status Record/200-WMS-26-001-00 Progress Status Record 25690225 V1.0 ApS.docx b/sdlc-delivery/1-PM Process (10 Work Product)/3.Progress Status Record/200-WMS-26-001-00 Progress Status Record 25690225 V1.0 ApS.docx
new file mode 100644
index 0000000..f0fe10d
Binary files /dev/null and b/sdlc-delivery/1-PM Process (10 Work Product)/3.Progress Status Record/200-WMS-26-001-00 Progress Status Record 25690225 V1.0 ApS.docx differ
diff --git a/sdlc-delivery/1-PM Process (10 Work Product)/3.Progress Status Record/200-WMS-26-001-00 Progress Status Record 25690317 V1.0 ApS.docx b/sdlc-delivery/1-PM Process (10 Work Product)/3.Progress Status Record/200-WMS-26-001-00 Progress Status Record 25690317 V1.0 ApS.docx
new file mode 100644
index 0000000..29bbd59
Binary files /dev/null and b/sdlc-delivery/1-PM Process (10 Work Product)/3.Progress Status Record/200-WMS-26-001-00 Progress Status Record 25690317 V1.0 ApS.docx differ
diff --git a/sdlc-delivery/1-PM Process (10 Work Product)/3.Progress Status Record/200-WMS-26-001-00 Progress Status Record 25690429 V1.0 ApS.docx b/sdlc-delivery/1-PM Process (10 Work Product)/3.Progress Status Record/200-WMS-26-001-00 Progress Status Record 25690429 V1.0 ApS.docx
new file mode 100644
index 0000000..23fbf84
Binary files /dev/null and b/sdlc-delivery/1-PM Process (10 Work Product)/3.Progress Status Record/200-WMS-26-001-00 Progress Status Record 25690429 V1.0 ApS.docx differ
diff --git a/sdlc-delivery/1-PM Process (10 Work Product)/3.Progress Status Record/200-WMS-26-001-00 Progress Status Record 25690508 V1.0 ApS.docx b/sdlc-delivery/1-PM Process (10 Work Product)/3.Progress Status Record/200-WMS-26-001-00 Progress Status Record 25690508 V1.0 ApS.docx
new file mode 100644
index 0000000..72b51c0
Binary files /dev/null and b/sdlc-delivery/1-PM Process (10 Work Product)/3.Progress Status Record/200-WMS-26-001-00 Progress Status Record 25690508 V1.0 ApS.docx differ
diff --git a/sdlc-delivery/1-PM Process (10 Work Product)/3.Progress Status Record/200-WMS-26-001-00 Progress Status Record 25690513 V1.0 ApS.docx b/sdlc-delivery/1-PM Process (10 Work Product)/3.Progress Status Record/200-WMS-26-001-00 Progress Status Record 25690513 V1.0 ApS.docx
new file mode 100644
index 0000000..0cd0c84
Binary files /dev/null and b/sdlc-delivery/1-PM Process (10 Work Product)/3.Progress Status Record/200-WMS-26-001-00 Progress Status Record 25690513 V1.0 ApS.docx differ
diff --git a/sdlc-delivery/1-PM Process (10 Work Product)/3.Progress Status Record/200-WMS-26-001-00 Progress Status Record 25690523 V1.0 ApS.docx b/sdlc-delivery/1-PM Process (10 Work Product)/3.Progress Status Record/200-WMS-26-001-00 Progress Status Record 25690523 V1.0 ApS.docx
new file mode 100644
index 0000000..2ed7be4
Binary files /dev/null and b/sdlc-delivery/1-PM Process (10 Work Product)/3.Progress Status Record/200-WMS-26-001-00 Progress Status Record 25690523 V1.0 ApS.docx differ
diff --git a/sdlc-delivery/1-PM Process (10 Work Product)/3.Progress Status Record/200-WMS-26-001-00 Progress Status Record 25690529 V1.0 ApS.docx b/sdlc-delivery/1-PM Process (10 Work Product)/3.Progress Status Record/200-WMS-26-001-00 Progress Status Record 25690529 V1.0 ApS.docx
new file mode 100644
index 0000000..8df80d8
Binary files /dev/null and b/sdlc-delivery/1-PM Process (10 Work Product)/3.Progress Status Record/200-WMS-26-001-00 Progress Status Record 25690529 V1.0 ApS.docx differ
diff --git a/sdlc-delivery/1-PM Process (10 Work Product)/3.Progress Status Record/200-WMS-26-001-00 Progress Status Record 25690803 V1.0 ApS.docx b/sdlc-delivery/1-PM Process (10 Work Product)/3.Progress Status Record/200-WMS-26-001-00 Progress Status Record 25690803 V1.0 ApS.docx
new file mode 100644
index 0000000..8b8c208
Binary files /dev/null and b/sdlc-delivery/1-PM Process (10 Work Product)/3.Progress Status Record/200-WMS-26-001-00 Progress Status Record 25690803 V1.0 ApS.docx differ
diff --git a/sdlc-delivery/1-PM Process (10 Work Product)/3.Progress Status Record/200-WMS-26-001-00 Progress Status Record 25690814 V1.0 ApS.docx b/sdlc-delivery/1-PM Process (10 Work Product)/3.Progress Status Record/200-WMS-26-001-00 Progress Status Record 25690814 V1.0 ApS.docx
new file mode 100644
index 0000000..0be3245
Binary files /dev/null and b/sdlc-delivery/1-PM Process (10 Work Product)/3.Progress Status Record/200-WMS-26-001-00 Progress Status Record 25690814 V1.0 ApS.docx differ
diff --git a/sdlc-delivery/1-PM Process (10 Work Product)/3.Progress Status Record/200-WMS-26-001-00 Progress Status Record 25690817 V1.0 ApS.docx b/sdlc-delivery/1-PM Process (10 Work Product)/3.Progress Status Record/200-WMS-26-001-00 Progress Status Record 25690817 V1.0 ApS.docx
new file mode 100644
index 0000000..cf3f59d
Binary files /dev/null and b/sdlc-delivery/1-PM Process (10 Work Product)/3.Progress Status Record/200-WMS-26-001-00 Progress Status Record 25690817 V1.0 ApS.docx differ
diff --git a/sdlc-delivery/1-PM Process (10 Work Product)/3.Progress Status Record/200-WMS-26-001-00 Progress Status Record 25690824 V1.0 ApS.docx b/sdlc-delivery/1-PM Process (10 Work Product)/3.Progress Status Record/200-WMS-26-001-00 Progress Status Record 25690824 V1.0 ApS.docx
new file mode 100644
index 0000000..03b095a
Binary files /dev/null and b/sdlc-delivery/1-PM Process (10 Work Product)/3.Progress Status Record/200-WMS-26-001-00 Progress Status Record 25690824 V1.0 ApS.docx differ
diff --git a/sdlc-delivery/1-PM Process (10 Work Product)/4.Correction Register/200-WMS-26-001-00 Correction Register 25690817 V1.0 YaB.docx b/sdlc-delivery/1-PM Process (10 Work Product)/4.Correction Register/200-WMS-26-001-00 Correction Register 25690817 V1.0 YaB.docx
new file mode 100644
index 0000000..f1ee485
Binary files /dev/null and b/sdlc-delivery/1-PM Process (10 Work Product)/4.Correction Register/200-WMS-26-001-00 Correction Register 25690817 V1.0 YaB.docx differ
diff --git a/sdlc-delivery/1-PM Process (10 Work Product)/5.Acceptance Report/200-WMS-26-001-00 Acceptance Report 25690817 V1.0 ApS.docx b/sdlc-delivery/1-PM Process (10 Work Product)/5.Acceptance Report/200-WMS-26-001-00 Acceptance Report 25690817 V1.0 ApS.docx
new file mode 100644
index 0000000..0872e3f
Binary files /dev/null and b/sdlc-delivery/1-PM Process (10 Work Product)/5.Acceptance Report/200-WMS-26-001-00 Acceptance Report 25690817 V1.0 ApS.docx differ
diff --git a/sdlc-delivery/1-PM Process (10 Work Product)/6.Change Report/200-WMS-26-001-00 Change Report 25690521 V1.0 NoC.docx b/sdlc-delivery/1-PM Process (10 Work Product)/6.Change Report/200-WMS-26-001-00 Change Report 25690521 V1.0 NoC.docx
new file mode 100644
index 0000000..230996c
Binary files /dev/null and b/sdlc-delivery/1-PM Process (10 Work Product)/6.Change Report/200-WMS-26-001-00 Change Report 25690521 V1.0 NoC.docx differ
diff --git a/sdlc-delivery/1-PM Process (10 Work Product)/6.Change Report/200-WMS-26-001-00 Change Report 25690808 V1.0 ApS.docx b/sdlc-delivery/1-PM Process (10 Work Product)/6.Change Report/200-WMS-26-001-00 Change Report 25690808 V1.0 ApS.docx
new file mode 100644
index 0000000..09b0886
Binary files /dev/null and b/sdlc-delivery/1-PM Process (10 Work Product)/6.Change Report/200-WMS-26-001-00 Change Report 25690808 V1.0 ApS.docx differ
diff --git a/sdlc-delivery/1-PM Process (10 Work Product)/6.Change Report/200-WMS-26-001-00 Change Report 25690810 V1.0 SeV.docx b/sdlc-delivery/1-PM Process (10 Work Product)/6.Change Report/200-WMS-26-001-00 Change Report 25690810 V1.0 SeV.docx
new file mode 100644
index 0000000..0f0ae2c
Binary files /dev/null and b/sdlc-delivery/1-PM Process (10 Work Product)/6.Change Report/200-WMS-26-001-00 Change Report 25690810 V1.0 SeV.docx differ
diff --git a/sdlc-delivery/1-PM Process (10 Work Product)/7.Meeting Record/200-WMS-26-001-00 Minutes Of Meeting 25690105 V1.0 YaB.docx b/sdlc-delivery/1-PM Process (10 Work Product)/7.Meeting Record/200-WMS-26-001-00 Minutes Of Meeting 25690105 V1.0 YaB.docx
new file mode 100644
index 0000000..bec2239
Binary files /dev/null and b/sdlc-delivery/1-PM Process (10 Work Product)/7.Meeting Record/200-WMS-26-001-00 Minutes Of Meeting 25690105 V1.0 YaB.docx differ
diff --git a/sdlc-delivery/1-PM Process (10 Work Product)/7.Meeting Record/200-WMS-26-001-00 Minutes Of Meeting 25690123 V1.0 YaB.docx b/sdlc-delivery/1-PM Process (10 Work Product)/7.Meeting Record/200-WMS-26-001-00 Minutes Of Meeting 25690123 V1.0 YaB.docx
new file mode 100644
index 0000000..8c6e6be
Binary files /dev/null and b/sdlc-delivery/1-PM Process (10 Work Product)/7.Meeting Record/200-WMS-26-001-00 Minutes Of Meeting 25690123 V1.0 YaB.docx differ
diff --git a/sdlc-delivery/1-PM Process (10 Work Product)/7.Meeting Record/200-WMS-26-001-00 Minutes Of Meeting 25690218 V1.0 YaB.docx b/sdlc-delivery/1-PM Process (10 Work Product)/7.Meeting Record/200-WMS-26-001-00 Minutes Of Meeting 25690218 V1.0 YaB.docx
new file mode 100644
index 0000000..7d9afd5
Binary files /dev/null and b/sdlc-delivery/1-PM Process (10 Work Product)/7.Meeting Record/200-WMS-26-001-00 Minutes Of Meeting 25690218 V1.0 YaB.docx differ
diff --git a/sdlc-delivery/1-PM Process (10 Work Product)/7.Meeting Record/200-WMS-26-001-00 Minutes Of Meeting 25690317 V1.0 YaB.docx b/sdlc-delivery/1-PM Process (10 Work Product)/7.Meeting Record/200-WMS-26-001-00 Minutes Of Meeting 25690317 V1.0 YaB.docx
new file mode 100644
index 0000000..717f539
Binary files /dev/null and b/sdlc-delivery/1-PM Process (10 Work Product)/7.Meeting Record/200-WMS-26-001-00 Minutes Of Meeting 25690317 V1.0 YaB.docx differ
diff --git a/sdlc-delivery/1-PM Process (10 Work Product)/7.Meeting Record/200-WMS-26-001-00 Minutes Of Meeting 25690429 V1.0 YaB.docx b/sdlc-delivery/1-PM Process (10 Work Product)/7.Meeting Record/200-WMS-26-001-00 Minutes Of Meeting 25690429 V1.0 YaB.docx
new file mode 100644
index 0000000..348d3cb
Binary files /dev/null and b/sdlc-delivery/1-PM Process (10 Work Product)/7.Meeting Record/200-WMS-26-001-00 Minutes Of Meeting 25690429 V1.0 YaB.docx differ
diff --git a/sdlc-delivery/1-PM Process (10 Work Product)/7.Meeting Record/200-WMS-26-001-00 Minutes Of Meeting 25690513 V1.0 YaB.docx b/sdlc-delivery/1-PM Process (10 Work Product)/7.Meeting Record/200-WMS-26-001-00 Minutes Of Meeting 25690513 V1.0 YaB.docx
new file mode 100644
index 0000000..f862905
Binary files /dev/null and b/sdlc-delivery/1-PM Process (10 Work Product)/7.Meeting Record/200-WMS-26-001-00 Minutes Of Meeting 25690513 V1.0 YaB.docx differ
diff --git a/sdlc-delivery/1-PM Process (10 Work Product)/7.Meeting Record/200-WMS-26-001-00 Minutes Of Meeting 25690523 V1.0 YaB.docx b/sdlc-delivery/1-PM Process (10 Work Product)/7.Meeting Record/200-WMS-26-001-00 Minutes Of Meeting 25690523 V1.0 YaB.docx
new file mode 100644
index 0000000..8ed0c7d
Binary files /dev/null and b/sdlc-delivery/1-PM Process (10 Work Product)/7.Meeting Record/200-WMS-26-001-00 Minutes Of Meeting 25690523 V1.0 YaB.docx differ
diff --git a/sdlc-delivery/1-PM Process (10 Work Product)/7.Meeting Record/200-WMS-26-001-00 Minutes Of Meeting 25690529 V1.0 YaB.docx b/sdlc-delivery/1-PM Process (10 Work Product)/7.Meeting Record/200-WMS-26-001-00 Minutes Of Meeting 25690529 V1.0 YaB.docx
new file mode 100644
index 0000000..05b39ef
Binary files /dev/null and b/sdlc-delivery/1-PM Process (10 Work Product)/7.Meeting Record/200-WMS-26-001-00 Minutes Of Meeting 25690529 V1.0 YaB.docx differ
diff --git a/sdlc-delivery/1-PM Process (10 Work Product)/7.Meeting Record/200-WMS-26-001-00 Minutes Of Meeting 25690803 V1.0 YaB.docx b/sdlc-delivery/1-PM Process (10 Work Product)/7.Meeting Record/200-WMS-26-001-00 Minutes Of Meeting 25690803 V1.0 YaB.docx
new file mode 100644
index 0000000..c81af33
Binary files /dev/null and b/sdlc-delivery/1-PM Process (10 Work Product)/7.Meeting Record/200-WMS-26-001-00 Minutes Of Meeting 25690803 V1.0 YaB.docx differ
diff --git a/sdlc-delivery/1-PM Process (10 Work Product)/7.Meeting Record/200-WMS-26-001-00 Minutes Of Meeting 25690814 V1.0 YaB.docx b/sdlc-delivery/1-PM Process (10 Work Product)/7.Meeting Record/200-WMS-26-001-00 Minutes Of Meeting 25690814 V1.0 YaB.docx
new file mode 100644
index 0000000..cf990d2
Binary files /dev/null and b/sdlc-delivery/1-PM Process (10 Work Product)/7.Meeting Record/200-WMS-26-001-00 Minutes Of Meeting 25690814 V1.0 YaB.docx differ
diff --git a/sdlc-delivery/1-PM Process (10 Work Product)/7.Meeting Record/200-WMS-26-001-00 Minutes Of Meeting 25690817 V1.0 YaB.docx b/sdlc-delivery/1-PM Process (10 Work Product)/7.Meeting Record/200-WMS-26-001-00 Minutes Of Meeting 25690817 V1.0 YaB.docx
new file mode 100644
index 0000000..439abd9
Binary files /dev/null and b/sdlc-delivery/1-PM Process (10 Work Product)/7.Meeting Record/200-WMS-26-001-00 Minutes Of Meeting 25690817 V1.0 YaB.docx differ
diff --git a/sdlc-delivery/1-PM Process (10 Work Product)/7.Meeting Record/200-WMS-26-001-00 Minutes Of Meeting 25690824 V1.0 YaB.docx b/sdlc-delivery/1-PM Process (10 Work Product)/7.Meeting Record/200-WMS-26-001-00 Minutes Of Meeting 25690824 V1.0 YaB.docx
new file mode 100644
index 0000000..db99c38
Binary files /dev/null and b/sdlc-delivery/1-PM Process (10 Work Product)/7.Meeting Record/200-WMS-26-001-00 Minutes Of Meeting 25690824 V1.0 YaB.docx differ
diff --git a/sdlc-delivery/1-PM Process (10 Work Product)/8.Software Configuration/200-WMS-26-001-00 Software Configuration 25690817 V1.0 ThS.docx b/sdlc-delivery/1-PM Process (10 Work Product)/8.Software Configuration/200-WMS-26-001-00 Software Configuration 25690817 V1.0 ThS.docx
new file mode 100644
index 0000000..80f0dcd
Binary files /dev/null and b/sdlc-delivery/1-PM Process (10 Work Product)/8.Software Configuration/200-WMS-26-001-00 Software Configuration 25690817 V1.0 ThS.docx differ
diff --git a/sdlc-delivery/1-PM Process (10 Work Product)/9.Project Repository/200-WMS-26-001-00 Project Repository 25690817 V1.0 ThS.docx b/sdlc-delivery/1-PM Process (10 Work Product)/9.Project Repository/200-WMS-26-001-00 Project Repository 25690817 V1.0 ThS.docx
new file mode 100644
index 0000000..1d29911
Binary files /dev/null and b/sdlc-delivery/1-PM Process (10 Work Product)/9.Project Repository/200-WMS-26-001-00 Project Repository 25690817 V1.0 ThS.docx differ
diff --git a/sdlc-delivery/2-SI Process (12 Work Product)/11.Software Requirements specification (SRS)/200-WMS-26-001-00 Software Requirements 25690225 V1.0 NoC.docx b/sdlc-delivery/2-SI Process (12 Work Product)/11.Software Requirements specification (SRS)/200-WMS-26-001-00 Software Requirements 25690225 V1.0 NoC.docx
new file mode 100644
index 0000000..8a61921
Binary files /dev/null and b/sdlc-delivery/2-SI Process (12 Work Product)/11.Software Requirements specification (SRS)/200-WMS-26-001-00 Software Requirements 25690225 V1.0 NoC.docx differ
diff --git a/sdlc-delivery/2-SI Process (12 Work Product)/12.Software design/200-WMS-26-001-00 Software Design 25690306 V1.0 NoC.docx b/sdlc-delivery/2-SI Process (12 Work Product)/12.Software design/200-WMS-26-001-00 Software Design 25690306 V1.0 NoC.docx
new file mode 100644
index 0000000..868077d
Binary files /dev/null and b/sdlc-delivery/2-SI Process (12 Work Product)/12.Software design/200-WMS-26-001-00 Software Design 25690306 V1.0 NoC.docx differ
diff --git a/sdlc-delivery/2-SI Process (12 Work Product)/13.Traceability record/200-WMS-26-001-00 Traceability Record 25690306 V1.0 NoC.docx b/sdlc-delivery/2-SI Process (12 Work Product)/13.Traceability record/200-WMS-26-001-00 Traceability Record 25690306 V1.0 NoC.docx
new file mode 100644
index 0000000..5f60d83
Binary files /dev/null and b/sdlc-delivery/2-SI Process (12 Work Product)/13.Traceability record/200-WMS-26-001-00 Traceability Record 25690306 V1.0 NoC.docx differ
diff --git a/sdlc-delivery/2-SI Process (12 Work Product)/14.Software Components/200-WMS-26-001-00 Software Components 25690817 V1.0 ThS.docx b/sdlc-delivery/2-SI Process (12 Work Product)/14.Software Components/200-WMS-26-001-00 Software Components 25690817 V1.0 ThS.docx
new file mode 100644
index 0000000..addb604
Binary files /dev/null and b/sdlc-delivery/2-SI Process (12 Work Product)/14.Software Components/200-WMS-26-001-00 Software Components 25690817 V1.0 ThS.docx differ
diff --git a/sdlc-delivery/2-SI Process (12 Work Product)/15.Test Cases and Test Procedures/200-WMS-26-001-00 Test Case and Test Procedures 25690731 V1.0 PaNg.docx b/sdlc-delivery/2-SI Process (12 Work Product)/15.Test Cases and Test Procedures/200-WMS-26-001-00 Test Case and Test Procedures 25690731 V1.0 PaNg.docx
new file mode 100644
index 0000000..444bbba
Binary files /dev/null and b/sdlc-delivery/2-SI Process (12 Work Product)/15.Test Cases and Test Procedures/200-WMS-26-001-00 Test Case and Test Procedures 25690731 V1.0 PaNg.docx differ
diff --git a/sdlc-delivery/2-SI Process (12 Work Product)/16.Test Report/200-WMS-26-001-00 Test Report 25690814 V1.0 PaNg.docx b/sdlc-delivery/2-SI Process (12 Work Product)/16.Test Report/200-WMS-26-001-00 Test Report 25690814 V1.0 PaNg.docx
new file mode 100644
index 0000000..cf46c3c
Binary files /dev/null and b/sdlc-delivery/2-SI Process (12 Work Product)/16.Test Report/200-WMS-26-001-00 Test Report 25690814 V1.0 PaNg.docx differ
diff --git a/sdlc-delivery/2-SI Process (12 Work Product)/17.Software/200-WMS-26-001-00 Software 25690817 V1.0 ThS.docx b/sdlc-delivery/2-SI Process (12 Work Product)/17.Software/200-WMS-26-001-00 Software 25690817 V1.0 ThS.docx
new file mode 100644
index 0000000..547c1d2
Binary files /dev/null and b/sdlc-delivery/2-SI Process (12 Work Product)/17.Software/200-WMS-26-001-00 Software 25690817 V1.0 ThS.docx differ
diff --git a/sdlc-delivery/2-SI Process (12 Work Product)/18.Software User Documentation/200-WMS-26-001-00 Software User Document 25690814 V1.0 ThS.docx b/sdlc-delivery/2-SI Process (12 Work Product)/18.Software User Documentation/200-WMS-26-001-00 Software User Document 25690814 V1.0 ThS.docx
new file mode 100644
index 0000000..77cad79
Binary files /dev/null and b/sdlc-delivery/2-SI Process (12 Work Product)/18.Software User Documentation/200-WMS-26-001-00 Software User Document 25690814 V1.0 ThS.docx differ
diff --git a/sdlc-delivery/2-SI Process (12 Work Product)/19.Product Operation Guide/200-WMS-26-001-00 Product Operation Guide 25690817 V1.0 ThS.docx b/sdlc-delivery/2-SI Process (12 Work Product)/19.Product Operation Guide/200-WMS-26-001-00 Product Operation Guide 25690817 V1.0 ThS.docx
new file mode 100644
index 0000000..69d3ece
Binary files /dev/null and b/sdlc-delivery/2-SI Process (12 Work Product)/19.Product Operation Guide/200-WMS-26-001-00 Product Operation Guide 25690817 V1.0 ThS.docx differ
diff --git a/sdlc-delivery/2-SI Process (12 Work Product)/20.Maintenance Documentation/200-WMS-26-001-00 Maintenance Document 25690817 V1.0 ThS.docx b/sdlc-delivery/2-SI Process (12 Work Product)/20.Maintenance Documentation/200-WMS-26-001-00 Maintenance Document 25690817 V1.0 ThS.docx
new file mode 100644
index 0000000..74d7c55
Binary files /dev/null and b/sdlc-delivery/2-SI Process (12 Work Product)/20.Maintenance Documentation/200-WMS-26-001-00 Maintenance Document 25690817 V1.0 ThS.docx differ
diff --git a/sdlc-delivery/2-SI Process (12 Work Product)/21.Verification Result/200-WMS-26-001-00 Verification Results 25690317 V0.1 PaNg.docx b/sdlc-delivery/2-SI Process (12 Work Product)/21.Verification Result/200-WMS-26-001-00 Verification Results 25690317 V0.1 PaNg.docx
new file mode 100644
index 0000000..d69d81f
Binary files /dev/null and b/sdlc-delivery/2-SI Process (12 Work Product)/21.Verification Result/200-WMS-26-001-00 Verification Results 25690317 V0.1 PaNg.docx differ
diff --git a/sdlc-delivery/2-SI Process (12 Work Product)/21.Verification Result/200-WMS-26-001-00 Verification Results 25690529 V0.2 PaNg.docx b/sdlc-delivery/2-SI Process (12 Work Product)/21.Verification Result/200-WMS-26-001-00 Verification Results 25690529 V0.2 PaNg.docx
new file mode 100644
index 0000000..382ca99
Binary files /dev/null and b/sdlc-delivery/2-SI Process (12 Work Product)/21.Verification Result/200-WMS-26-001-00 Verification Results 25690529 V0.2 PaNg.docx differ
diff --git a/sdlc-delivery/2-SI Process (12 Work Product)/21.Verification Result/200-WMS-26-001-00 Verification Results 25690731 V0.3 PaNg.docx b/sdlc-delivery/2-SI Process (12 Work Product)/21.Verification Result/200-WMS-26-001-00 Verification Results 25690731 V0.3 PaNg.docx
new file mode 100644
index 0000000..3c72e8f
Binary files /dev/null and b/sdlc-delivery/2-SI Process (12 Work Product)/21.Verification Result/200-WMS-26-001-00 Verification Results 25690731 V0.3 PaNg.docx differ
diff --git a/sdlc-delivery/2-SI Process (12 Work Product)/21.Verification Result/200-WMS-26-001-00 Verification Results 25690817 V1.0 PaNg.docx b/sdlc-delivery/2-SI Process (12 Work Product)/21.Verification Result/200-WMS-26-001-00 Verification Results 25690817 V1.0 PaNg.docx
new file mode 100644
index 0000000..e352a21
Binary files /dev/null and b/sdlc-delivery/2-SI Process (12 Work Product)/21.Verification Result/200-WMS-26-001-00 Verification Results 25690817 V1.0 PaNg.docx differ
diff --git a/sdlc-delivery/2-SI Process (12 Work Product)/22.Validation Result/200-WMS-26-001-00 Validation Results 25690814 V1.0 PaNg.docx b/sdlc-delivery/2-SI Process (12 Work Product)/22.Validation Result/200-WMS-26-001-00 Validation Results 25690814 V1.0 PaNg.docx
new file mode 100644
index 0000000..0e83d29
Binary files /dev/null and b/sdlc-delivery/2-SI Process (12 Work Product)/22.Validation Result/200-WMS-26-001-00 Validation Results 25690814 V1.0 PaNg.docx differ
diff --git a/sdlc-delivery/3-Other Document/200-WMS-26-001-00 List of Evidence 25690824 V1.0 YaB.docx b/sdlc-delivery/3-Other Document/200-WMS-26-001-00 List of Evidence 25690824 V1.0 YaB.docx
new file mode 100644
index 0000000..af282bf
Binary files /dev/null and b/sdlc-delivery/3-Other Document/200-WMS-26-001-00 List of Evidence 25690824 V1.0 YaB.docx differ
diff --git a/sdlc-delivery/3-Other Document/200-WMS-26-001-00 Project Charter Report 25690123 V1.0 YaB.docx b/sdlc-delivery/3-Other Document/200-WMS-26-001-00 Project Charter Report 25690123 V1.0 YaB.docx
new file mode 100644
index 0000000..7e0f594
Binary files /dev/null and b/sdlc-delivery/3-Other Document/200-WMS-26-001-00 Project Charter Report 25690123 V1.0 YaB.docx differ
diff --git a/sdlc-delivery/3-Other Document/200-WMS-26-001-00 Stakeholder Register 25690116 V1.0 YaB.docx b/sdlc-delivery/3-Other Document/200-WMS-26-001-00 Stakeholder Register 25690116 V1.0 YaB.docx
new file mode 100644
index 0000000..5ccf772
Binary files /dev/null and b/sdlc-delivery/3-Other Document/200-WMS-26-001-00 Stakeholder Register 25690116 V1.0 YaB.docx differ
diff --git a/sdlc-delivery/3-Other Document/200-WMS-26-001-00 TRACEABILITY-RECORD 25690817 V1.0 NoC.docx b/sdlc-delivery/3-Other Document/200-WMS-26-001-00 TRACEABILITY-RECORD 25690817 V1.0 NoC.docx
new file mode 100644
index 0000000..f15a880
Binary files /dev/null and b/sdlc-delivery/3-Other Document/200-WMS-26-001-00 TRACEABILITY-RECORD 25690817 V1.0 NoC.docx differ
diff --git a/sdlc-delivery/3-Other Document/200-WMS-26-001-00 Training Report 25690822 V1.0 YaB.docx b/sdlc-delivery/3-Other Document/200-WMS-26-001-00 Training Report 25690822 V1.0 YaB.docx
new file mode 100644
index 0000000..4700aba
Binary files /dev/null and b/sdlc-delivery/3-Other Document/200-WMS-26-001-00 Training Report 25690822 V1.0 YaB.docx differ