test(qa): verify exact long timeline content preservation
This commit is contained in:
@@ -2,6 +2,8 @@
|
|||||||
|
|
||||||
The final separate Phase9 diagnostic lane completed **18/18**, zero failures/skips/flaky/retries, on the frozen825-input manifest (`phase9-frozen`, exit0 at20:25:16UTC). It includes12 route/theme/locale/width cases, four settled accessibility cases, one RD21 characterization and one bounded workload. **A passing characterization does not qualify the unsafe behavior it records.** The earlier18-case run and the later16pass/2fail transition observation remain superseded raw evidence.
|
The final separate Phase9 diagnostic lane completed **18/18**, zero failures/skips/flaky/retries, on the frozen825-input manifest (`phase9-frozen`, exit0 at20:25:16UTC). It includes12 route/theme/locale/width cases, four settled accessibility cases, one RD21 characterization and one bounded workload. **A passing characterization does not qualify the unsafe behavior it records.** The earlier18-case run and the later16pass/2fail transition observation remain superseded raw evidence.
|
||||||
|
|
||||||
|
That diagnostic snapshot is retained as [source-manifest-before-admin-fixture.json](../p9-00/source-manifest-before-admin-fixture.json). The final ordinary-run snapshot changes only the locale-sensitive Admin test locator; [exact delta](../p9-00/admin-fixture-delta.json) proves product/build/diagnostic/core inputs are unchanged. No diagnostic result is claimed to execute an ordinary fixture it does not load.
|
||||||
|
|
||||||
## Native documents
|
## Native documents
|
||||||
|
|
||||||
Fresh real preview and native exported PDF bytes from the retained corpus passed **16/16 fixtures /36 pages** under the unchanged oracle: exact page count/membership, physical dimensions ±0.5mm, marker positions ±2mm, font sizes ±0.5pt and original RGB tolerance. Nine defaults, long EN/NB, 8mm Letter, 28mm roomy, grid/bubbles, long sidebar and unbreakable boundary fixtures are included. No renderer geometry or tolerance changed.
|
Fresh real preview and native exported PDF bytes from the retained corpus passed **16/16 fixtures /36 pages** under the unchanged oracle: exact page count/membership, physical dimensions ±0.5mm, marker positions ±2mm, font sizes ±0.5pt and original RGB tolerance. Nine defaults, long EN/NB, 8mm Letter, 28mm roomy, grid/bubbles, long sidebar and unbreakable boundary fixtures are included. No renderer geometry or tolerance changed.
|
||||||
|
|||||||
@@ -9,7 +9,7 @@
|
|||||||
{
|
{
|
||||||
"status": "passed",
|
"status": "passed",
|
||||||
"retry": 0,
|
"retry": 0,
|
||||||
"durationMs": 6435,
|
"durationMs": 1966,
|
||||||
"errors": [],
|
"errors": [],
|
||||||
"attachments": [
|
"attachments": [
|
||||||
{
|
{
|
||||||
@@ -32,7 +32,7 @@
|
|||||||
{
|
{
|
||||||
"status": "passed",
|
"status": "passed",
|
||||||
"retry": 0,
|
"retry": 0,
|
||||||
"durationMs": 5520,
|
"durationMs": 1623,
|
||||||
"errors": [],
|
"errors": [],
|
||||||
"attachments": [
|
"attachments": [
|
||||||
{
|
{
|
||||||
@@ -55,7 +55,7 @@
|
|||||||
{
|
{
|
||||||
"status": "passed",
|
"status": "passed",
|
||||||
"retry": 0,
|
"retry": 0,
|
||||||
"durationMs": 51407,
|
"durationMs": 16460,
|
||||||
"errors": [],
|
"errors": [],
|
||||||
"attachments": [
|
"attachments": [
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
# Bounded volume supplement
|
# Bounded volume supplement
|
||||||
|
|
||||||
**3/3 passed**, zero failures/skips/flaky/retries, `volume-qualified`, exit0 at20:46:29UTC on22October. Full TypeScript checking also passed. The initial runtime pass used an incorrect type-only import; that import was corrected and the complete three-case successor passed on the final source. Neither run changes product code.
|
**3/3 passed**, zero failures/skips/flaky/retries, `volume-complete`, exit0 at00:27:14 UTC on23October. Full TypeScript checking also passed. An initial type-only import error was corrected; review then strengthened timeline preservation from a prefix check to exact content-by-ID comparison. The complete three-case successor passed on the final source. Earlier passes are retained as superseded evidence; no product code changed.
|
||||||
|
|
||||||
| Scenario | Actual native result | Limit |
|
| Scenario | Actual native result | Limit |
|
||||||
|---|---|---|
|
|---|---|---|
|
||||||
|
|||||||
@@ -55,14 +55,15 @@ test('P9 volume: 100 manual timeline messages retain exact membership and foreig
|
|||||||
expect(company.status()).toBe(201);
|
expect(company.status()).toBe(201);
|
||||||
const job = await api.post(`${base}/jobapplications`, { headers, data: { companyId: (await company.json()).id, jobTitle: 'Volume timeline fixture', status: 'Saved' } });
|
const job = await api.post(`${base}/jobapplications`, { headers, data: { companyId: (await company.json()).id, jobTitle: 'Volume timeline fixture', status: 'Saved' } });
|
||||||
expect(job.status()).toBe(201); const jobId = (await job.json()).id;
|
expect(job.status()).toBe(201); const jobId = (await job.json()).id;
|
||||||
const ids: number[] = [];
|
const ids: number[] = []; const expectedContent = new Map<number, string>();
|
||||||
for (let index = 0; index < 100; index++) {
|
for (let index = 0; index < 100; index++) {
|
||||||
const response = await api.post(`${base}/correspondence`, { headers, data: { jobApplicationId: jobId, from: 'Synthetic manual note', content: `Timeline evidence ${index} ${'Documented progress. '.repeat(20)}`, channel: 'manual', direction: 'incoming' } });
|
const content = `Timeline evidence ${index} ${'Documented progress. '.repeat(20)}`.trimEnd();
|
||||||
expect(response.status()).toBe(201); ids.push((await response.json()).id);
|
const response = await api.post(`${base}/correspondence`, { headers, data: { jobApplicationId: jobId, from: 'Synthetic manual note', content, channel: 'manual', direction: 'incoming' } });
|
||||||
|
expect(response.status()).toBe(201); const id = (await response.json()).id; ids.push(id); expectedContent.set(id, content);
|
||||||
}
|
}
|
||||||
const response = await api.get(`${base}/correspondence/${jobId}`); expect(response.status()).toBe(200);
|
const response = await api.get(`${base}/correspondence/${jobId}`); expect(response.status()).toBe(200);
|
||||||
const rows = await response.json(); expect(rows.map((row: { id: number }) => row.id).sort((a: number, b: number) => a - b)).toEqual([...ids].sort((a, b) => a - b));
|
const rows = await response.json(); expect(rows.map((row: { id: number }) => row.id).sort((a: number, b: number) => a - b)).toEqual([...ids].sort((a, b) => a - b));
|
||||||
expect(rows.every((row: { content: string }) => row.content.startsWith('Timeline evidence '))).toBe(true);
|
for (const row of rows) expect(row.content).toBe(expectedContent.get(row.id));
|
||||||
expect((await other.api.get(`${base}/correspondence/${jobId}`)).status()).toBe(404);
|
expect((await other.api.get(`${base}/correspondence/${jobId}`)).status()).toBe(404);
|
||||||
await info.attach('phase9-volume-timeline', { body: JSON.stringify({ messages: rows.length, exactMembership: true, foreignRead: 404, limits: 'Native persisted manual correspondence; no external mail delivery or100-message browser rendering claim.' }), contentType: 'application/json' });
|
await info.attach('phase9-volume-timeline', { body: JSON.stringify({ messages: rows.length, exactMembership: true, foreignRead: 404, limits: 'Native persisted manual correspondence; no external mail delivery or100-message browser rendering claim.' }), contentType: 'application/json' });
|
||||||
} finally { await account.api.dispose(); await other.api.dispose(); }
|
} finally { await account.api.dispose(); await other.api.dispose(); }
|
||||||
|
|||||||
Reference in New Issue
Block a user