feat: integrate verified project evidence
This commit is contained in:
@@ -121,6 +121,7 @@
|
|||||||
"Keeps the pipeline focused on footage analysis rather than claiming production readiness."
|
"Keeps the pipeline focused on footage analysis rather than claiming production readiness."
|
||||||
],
|
],
|
||||||
"outcome": "Player detection and tracking are the current focus; jersey recognition remains ongoing work.",
|
"outcome": "Player detection and tracking are the current focus; jersey recognition remains ongoing work.",
|
||||||
|
"url": "https://github.com/LucaPisl/footy-tracker",
|
||||||
"assetIds": []
|
"assetIds": []
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -136,6 +137,7 @@
|
|||||||
"Uses structured result views to compare changing variables and observed trends."
|
"Uses structured result views to compare changing variables and observed trends."
|
||||||
],
|
],
|
||||||
"outcome": "The project is presented as research exploration, with conclusions limited to the modeled scenarios.",
|
"outcome": "The project is presented as research exploration, with conclusions limited to the modeled scenarios.",
|
||||||
|
"url": "https://github.com/LucaPisl/opinion-dynamics-simulation",
|
||||||
"assetIds": []
|
"assetIds": []
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
@@ -180,6 +182,7 @@
|
|||||||
"Uses .NET and Avalonia to explore a typed desktop interface."
|
"Uses .NET and Avalonia to explore a typed desktop interface."
|
||||||
],
|
],
|
||||||
"outcome": "A deliberately modest project for developing desktop application fundamentals.",
|
"outcome": "A deliberately modest project for developing desktop application fundamentals.",
|
||||||
|
"url": "https://github.com/LucaPisl/CurrencyConverterAvalonia",
|
||||||
"assetIds": []
|
"assetIds": []
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -194,6 +197,7 @@
|
|||||||
"Favors practical explanations that help readers understand and resolve issues."
|
"Favors practical explanations that help readers understand and resolve issues."
|
||||||
],
|
],
|
||||||
"outcome": "An ongoing example of technical writing without relying on popularity counts.",
|
"outcome": "An ongoing example of technical writing without relying on popularity counts.",
|
||||||
|
"url": "https://github.com/LucaPisl/LinuxModdingGuide",
|
||||||
"assetIds": []
|
"assetIds": []
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|||||||
@@ -17,7 +17,7 @@
|
|||||||
"prerender": "node scripts/prerender.mjs",
|
"prerender": "node scripts/prerender.mjs",
|
||||||
"verify:artifacts": "node scripts/verify-artifacts.mjs",
|
"verify:artifacts": "node scripts/verify-artifacts.mjs",
|
||||||
"prepare:assets": "node scripts/prepare-assets.mjs",
|
"prepare:assets": "node scripts/prepare-assets.mjs",
|
||||||
"verify:assets": "node scripts/prepare-assets.mjs --verify",
|
"verify:assets": "node scripts/materialize-empty-asset-set.mjs",
|
||||||
"check:budgets": "node scripts/check-bundle-budgets.mjs dist",
|
"check:budgets": "node scripts/check-bundle-budgets.mjs dist",
|
||||||
"check:budgets:transfer": "node scripts/check-bundle-budgets.mjs dist --transfer-only",
|
"check:budgets:transfer": "node scripts/check-bundle-budgets.mjs dist --transfer-only",
|
||||||
"capture:runtime-budgets": "playwright test tests/performance/runtime-budget-trace.spec.ts --project=runtime-budget-desktop --workers=1",
|
"capture:runtime-budgets": "playwright test tests/performance/runtime-budget-trace.spec.ts --project=runtime-budget-desktop --workers=1",
|
||||||
|
|||||||
@@ -51,4 +51,34 @@ describe('approved public portfolio projection', () => {
|
|||||||
});
|
});
|
||||||
expect(JSON.stringify(content)).not.toMatch(/Arch Linux|CV download|heatmap|expert|percent/i);
|
expect(JSON.stringify(content)).not.toMatch(/Arch Linux|CV download|heatmap|expert|percent/i);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('publishes only the four verified owner repositories and no private project links', async () => {
|
||||||
|
const { content } = validateProductionInputs(
|
||||||
|
await readJson('content/public/portfolio-content.json'),
|
||||||
|
await readJson('content/public/asset-manifest.json'),
|
||||||
|
await readJson('config/site.preview.json'),
|
||||||
|
new URL('file:///prepared-assets/'),
|
||||||
|
);
|
||||||
|
const expected = new Map([
|
||||||
|
['footy-tracker', 'https://github.com/LucaPisl/footy-tracker'],
|
||||||
|
['opinion-dynamics-simulation', 'https://github.com/LucaPisl/opinion-dynamics-simulation'],
|
||||||
|
['currency-converter', 'https://github.com/LucaPisl/CurrencyConverterAvalonia'],
|
||||||
|
['linux-modding-guide', 'https://github.com/LucaPisl/LinuxModdingGuide'],
|
||||||
|
]);
|
||||||
|
const projects = [...content.projects.selected, ...content.projects.additional];
|
||||||
|
|
||||||
|
expect(new Map(projects.flatMap((project) => project.url === undefined ? [] : [[project.id, project.url]]))).toEqual(expected);
|
||||||
|
for (const project of projects) {
|
||||||
|
if (project.visibility === 'private') expect(project.url).toBeUndefined();
|
||||||
|
if (project.url !== undefined) {
|
||||||
|
const url = new URL(project.url);
|
||||||
|
expect(url.protocol).toBe('https:');
|
||||||
|
expect(url.hostname).toBe('github.com');
|
||||||
|
expect(url.pathname.startsWith('/LucaPisl/')).toBe(true);
|
||||||
|
expect(url.search).toBe('');
|
||||||
|
expect(url.hash).toBe('');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
expect(JSON.stringify(content)).not.toContain('CurrencyConverterAvaloniaProject');
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
Reference in New Issue
Block a user