Publish curated projectbrain source from 86d690c7579e368ce86b878b87bbeead9565ca20
This commit is contained in:
1 parent
5aa3e8d685
commit
471bd99c49
5 files changed
+2
-93
No files matched your search
@@ -1,3 +1,3 @@
|
||||
# Public source export
|
||||
|
||||
This source snapshot was generated from the private canonical repository at revision `8a7b1e0651dbdab97d744cbd2e653ab3970ac6c5`. It contains no private Git history or operational evidence. Changes are published from the canonical repository.
|
||||
This source snapshot was generated from the private canonical repository at revision `86d690c7579e368ce86b878b87bbeead9565ca20`. It contains no private Git history or operational evidence. Changes are published from the canonical repository.
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"schemaVersion": 1,
|
||||
"sourceRevision": "8a7b1e0651dbdab97d744cbd2e653ab3970ac6c5",
|
||||
"sourceRevision": "86d690c7579e368ce86b878b87bbeead9565ca20",
|
||||
"files": [
|
||||
{
|
||||
"path": ".dockerignore",
|
||||
@@ -2742,11 +2742,6 @@
|
||||
"sha256": "d3694e11ff8fa25233922d79e423cf90538653ede0acba4b13a3aa2a90a83453",
|
||||
"bytes": 288
|
||||
},
|
||||
{
|
||||
"path": "src/shared/lib/autoModeExecutorContract.test.ts",
|
||||
"sha256": "c9e40a0c9612b35e17455f29ccbb80846ab2fd0aa8f4ab7dffbcbae5c9fb8d41",
|
||||
"bytes": 1521
|
||||
},
|
||||
{
|
||||
"path": "src/shared/lib/autoModePresentation.test.ts",
|
||||
"sha256": "e565e861077e0c972b809221588daa6d1a3636a4eff1af443024704a9397240d",
|
||||
@@ -3357,11 +3352,6 @@
|
||||
"sha256": "a406cf5d1afe4f3bc786972a0f9fde85f2fb4a5fa0ba855e028759cb74593d10",
|
||||
"bytes": 2719
|
||||
},
|
||||
{
|
||||
"path": "src/shared/lib/releaseValidationContract.test.ts",
|
||||
"sha256": "4948660461fad7dcdc9a220f7dc5b0b4e8875d0c936630552d5aba26a2dc1582",
|
||||
"bytes": 753
|
||||
},
|
||||
{
|
||||
"path": "src/shared/lib/repositoryIntake.ts",
|
||||
"sha256": "ad8a027dfa3343e3258f15f110d3fda82512667e023d78c41b1bb6ff59f8947e",
|
||||
@@ -3382,11 +3372,6 @@
|
||||
"sha256": "63f045e23dfcde75481dc41139463279261ec36e7f846125a1b9deebbd42d018",
|
||||
"bytes": 2191
|
||||
},
|
||||
{
|
||||
"path": "src/shared/lib/runnerlessDeliveryPolicy.test.ts",
|
||||
"sha256": "6b7ae8844bd3453ec7346a5c0765c35c7fc0fda17d410a108c062b0bb85f936a",
|
||||
"bytes": 1424
|
||||
},
|
||||
{
|
||||
"path": "src/shared/lib/safeData.ts",
|
||||
"sha256": "6c725068a13fb8328a8f89a15aaccdae65b1655ea74da1c59736bc859d56bc09",
|
||||
|
||||
@@ -1,31 +0,0 @@
|
||||
import { readFileSync } from "node:fs";
|
||||
import { describe, expect, it } from "vitest";
|
||||
|
||||
const readRepositoryFile = (path: string) =>
|
||||
readFileSync(new URL(`../../../${path}`, import.meta.url), "utf8");
|
||||
|
||||
describe("Auto Mode executor host contract", () => {
|
||||
it("keeps ordinary ChatGPT web chat as the only primary executor surface", () => {
|
||||
const productContract = readRepositoryFile("docs/UX_AUTONOMY_PRODUCT_CONTRACT.md");
|
||||
const operatingGuide = readRepositoryFile("docs/PROJECTBRAIN_CHATGPT_OPERATING_LAYER.md");
|
||||
|
||||
expect(productContract).toContain(
|
||||
"primary Auto Mode executor surface MUST be scheduled tasks in the ordinary ChatGPT web chat",
|
||||
);
|
||||
expect(productContract).toContain("Codex desktop or Codex CLI automations");
|
||||
expect(operatingGuide).toContain(
|
||||
"only supported primary executor surface is scheduled tasks in the ordinary ChatGPT **web chat**",
|
||||
);
|
||||
expect(productContract).toContain("Multiple such tasks MAY run concurrently");
|
||||
expect(operatingGuide).toContain("different projects concurrently");
|
||||
expect(operatingGuide).toContain(
|
||||
"Codex automations, Codex CLI, ChatGPT Work, local cron jobs and server-side OpenAI API calls MUST NOT schedule",
|
||||
);
|
||||
expect(productContract).toContain(
|
||||
"MUST NOT pause, disable, delete, reschedule, or otherwise mutate its own recurring ChatGPT task",
|
||||
);
|
||||
expect(operatingGuide).toContain(
|
||||
"MUST NOT pause, disable, delete or reschedule its own recurring ChatGPT web task",
|
||||
);
|
||||
});
|
||||
});
|
||||
@@ -1,15 +0,0 @@
|
||||
import { readFileSync } from "node:fs";
|
||||
import { describe, expect, it } from "vitest";
|
||||
|
||||
describe("release validation contract", () => {
|
||||
it("keeps mock and real browser smoke inside the deployment-authoritative full gate", () => {
|
||||
const workflow = readFileSync(new URL("../../../.gitea/workflows/managed-validation.yml", import.meta.url), "utf8");
|
||||
|
||||
expect(workflow).toContain("postgres:16");
|
||||
expect(workflow).toContain("TEST_DATABASE_URL");
|
||||
expect(workflow).toMatch(/\[\[\s+"\$\{profile\}"\s+==\s+(?:"full"|full)/);
|
||||
expect(workflow).toContain("playwright install --with-deps --force chromium chromium-headless-shell");
|
||||
expect(workflow).toContain("pnpm test:e2e");
|
||||
expect(workflow).toContain("pnpm test:e2e:real");
|
||||
});
|
||||
});
|
||||
@@ -1,30 +0,0 @@
|
||||
import { readdirSync, readFileSync } from "node:fs";
|
||||
import { join } from "node:path";
|
||||
import { describe, expect, it } from "vitest";
|
||||
|
||||
const workflowRoot = join(process.cwd(), ".gitea", "workflows");
|
||||
const workflowFiles = readdirSync(workflowRoot)
|
||||
.filter((name) => name.endsWith(".yml") || name.endsWith(".yaml"))
|
||||
.sort();
|
||||
|
||||
const workflowSource = (name: string) => readFileSync(join(workflowRoot, name), "utf8");
|
||||
|
||||
describe("runnerless production delivery policy", () => {
|
||||
it("keeps production mutation out of Gitea Actions", () => {
|
||||
expect(workflowFiles).not.toContain("unraid-deploy.yml");
|
||||
|
||||
for (const name of workflowFiles) {
|
||||
const source = workflowSource(name);
|
||||
expect(source, `${name} must not target the retired deployment runner`).not.toMatch(/runs-on:\s*unraid-deploy\b/);
|
||||
expect(source, `${name} must not execute the root deployment controller`).not.toMatch(/docker\s+exec\s+gitea-deploy-control/);
|
||||
expect(source, `${name} must not call the legacy deploy entrypoint`).not.toMatch(/deploy\.py\s+deploy\b/);
|
||||
}
|
||||
});
|
||||
|
||||
it("retains the exact validation context consumed by the runnerless controller", () => {
|
||||
const managedValidation = workflowSource("managed-validation.yml");
|
||||
expect(managedValidation).toContain("name: Managed validation");
|
||||
expect(managedValidation).toContain("branches: [main]");
|
||||
expect(managedValidation).toContain("name: full");
|
||||
});
|
||||
});
|
||||
Reference in new issue
Block a user