Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 1 addition & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,7 @@ T4 Code is a free, open-source (MIT) desktop app for [Oh My Pi](https://github.c

T4 Code needs an OMP build with desktop appserver support. For v0.1.22, use the public integration build below.

T4 Code v0.1.22 was verified with OMP 17.0.4 built from [`be0301f5`](https://github.com/lyc-aon/oh-my-pi/commit/be0301f566ef172b6a7e1864853b3f04d6545758), tagged [`t4code-17.0.4-appserver-4`](https://github.com/lyc-aon/oh-my-pi/tree/t4code-17.0.4-appserver-4). That public integration is based on the official upstream [`v17.0.4`](https://github.com/can1357/oh-my-pi/tree/v17.0.4) tag at [`3fdd85ab`](https://github.com/can1357/oh-my-pi/commit/3fdd85ab6c6bab6c0cdee80abbbec0981740a5c0). It adds the versioned Agent View lifecycle contract, session-owned agent cancellation, macOS system-temp alias support, workspace-native artifact preference, retry-safe release metadata, lock-aware session observation, complete transcript reconciliation, missing-lock-only promotion, the cooperative `/continue-in-t4` handoff, and deterministic session ordering. Fork CI verifies the exact upstream base, ancestry, release gates, and published binaries.

The official upstream v17.0.4 tag has no `appserver` command, so it cannot host T4 Code. T4 Code vendors `@oh-my-pi/app-wire` 0.5.8 from integration commit [`33615123`](https://github.com/lyc-aon/oh-my-pi/commit/33615123ff986fc9cadf645463b4fed17e8b9f35), source tree `e36475dc81dd4c3703eb207ae466f85947b33525`.
T4 Code v0.1.22 was verified with OMP 17.0.0 built from [`f909a289`](https://github.com/lyc-aon/oh-my-pi/commit/f909a2895bc1a352d1d3c27c45d59622bc1c0a36), tagged [`t4code-17.0.0-appserver-6`](https://github.com/lyc-aon/oh-my-pi/tree/t4code-17.0.0-appserver-6). That public integration is based on the official upstream [`v17.0.0`](https://github.com/can1357/oh-my-pi/tree/v17.0.0) tag at [`d5cd24f3`](https://github.com/can1357/oh-my-pi/commit/d5cd24f39a951bfbd50dc8f50bcf095d59694d6c). It adds lock-aware read-only observation of sessions an OMP TUI is running, complete line-by-line transcript reconciliation, writable promotion only when a session's lock is freshly missing, the cooperative `/continue-in-t4` TUI handoff, and deterministic session file ordering, on top of appserver-4's profile-scoped appservers, host-scoped `usage.read` and `broker.status` commands with redacted results, real thinking levels and fast support, and bounded project catalog resolution. Fork CI rechecks the exact upstream ancestry and release gates before publishing binaries. The official upstream v17.0.0 tag has no `appserver` command, so it cannot host T4 Code. The verified runtime is a normal build from the public `lyc-aon/oh-my-pi` source; T4 Code does not depend on private home-directory files, an auth broker, or a custom Codex CLI fork. T4 Code vendors `@oh-my-pi/app-wire` 0.5.8 from integration commit [`33615123`](https://github.com/lyc-aon/oh-my-pi/commit/33615123ff986fc9cadf645463b4fed17e8b9f35), source tree `e36475dc81dd4c3703eb207ae466f85947b33525`.

| Platform | Arch | Package |
| -------- | --------------------- | ---------------------------------------- |
Expand Down
10 changes: 5 additions & 5 deletions apps/site/src/release.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,12 @@ export const SITE_URL = "https://t4code.net";
export const DOCS_URL = `${SITE_URL}/docs`;
export const REPO_URL = "https://github.com/LycaonLLC/t4-code";
export const OMP_URL = "https://github.com/can1357/oh-my-pi";
export const OMP_RUNTIME_VERSION = "17.0.4";
export const OMP_RUNTIME_COMMIT = "be0301f566ef172b6a7e1864853b3f04d6545758";
export const OMP_RUNTIME_TAG = "t4code-17.0.4-appserver-4";
export const OMP_RUNTIME_VERSION = "17.0.0";
export const OMP_RUNTIME_COMMIT = "f909a2895bc1a352d1d3c27c45d59622bc1c0a36";
export const OMP_RUNTIME_TAG = "t4code-17.0.0-appserver-6";
export const OMP_RUNTIME_URL = `https://github.com/lyc-aon/oh-my-pi/tree/${OMP_RUNTIME_TAG}`;
export const OMP_UPSTREAM_TAG = "v17.0.4";
export const OMP_UPSTREAM_COMMIT = "3fdd85ab6c6bab6c0cdee80abbbec0981740a5c0";
export const OMP_UPSTREAM_TAG = "v17.0.0";
export const OMP_UPSTREAM_COMMIT = "d5cd24f39a951bfbd50dc8f50bcf095d59694d6c";
export const OMP_UPSTREAM_URL = `${OMP_URL}/tree/${OMP_UPSTREAM_TAG}`;
export const APP_WIRE_VERSION = "0.5.8";
export const RELEASE_TAG = "v0.1.22";
Expand Down
12 changes: 6 additions & 6 deletions apps/site/test/release.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -61,14 +61,14 @@ describe("release assets", () => {

describe("OMP integration contract", () => {
it("pins the verified runtime tag, commit, and app-wire package", () => {
expect(OMP_RUNTIME_TAG).toBe("t4code-17.0.4-appserver-4");
expect(OMP_RUNTIME_COMMIT).toBe("be0301f566ef172b6a7e1864853b3f04d6545758");
expect(OMP_RUNTIME_TAG).toBe("t4code-17.0.0-appserver-6");
expect(OMP_RUNTIME_COMMIT).toBe("f909a2895bc1a352d1d3c27c45d59622bc1c0a36");
expect(OMP_RUNTIME_URL).toBe(
"https://github.com/lyc-aon/oh-my-pi/tree/t4code-17.0.4-appserver-4",
"https://github.com/lyc-aon/oh-my-pi/tree/t4code-17.0.0-appserver-6",
);
expect(OMP_UPSTREAM_TAG).toBe("v17.0.4");
expect(OMP_UPSTREAM_COMMIT).toBe("3fdd85ab6c6bab6c0cdee80abbbec0981740a5c0");
expect(OMP_UPSTREAM_URL).toBe("https://github.com/can1357/oh-my-pi/tree/v17.0.4");
expect(OMP_UPSTREAM_TAG).toBe("v17.0.0");
expect(OMP_UPSTREAM_COMMIT).toBe("d5cd24f39a951bfbd50dc8f50bcf095d59694d6c");
expect(OMP_UPSTREAM_URL).toBe("https://github.com/can1357/oh-my-pi/tree/v17.0.0");
expect(APP_WIRE_VERSION).toBe("0.5.8");
});
});
Expand Down
19 changes: 7 additions & 12 deletions compat/omp-app-matrix.json
Original file line number Diff line number Diff line change
Expand Up @@ -19,14 +19,14 @@
},
"publishedRuntime": {
"package": "omp",
"version": "17.0.4",
"version": "17.0.0",
"sourceRepository": "https://github.com/lyc-aon/oh-my-pi",
"sourceCommit": "be0301f566ef172b6a7e1864853b3f04d6545758",
"sourceUrl": "https://github.com/lyc-aon/oh-my-pi/commit/be0301f566ef172b6a7e1864853b3f04d6545758",
"sourceTag": "t4code-17.0.4-appserver-4",
"sourceCommit": "f909a2895bc1a352d1d3c27c45d59622bc1c0a36",
"sourceUrl": "https://github.com/lyc-aon/oh-my-pi/commit/f909a2895bc1a352d1d3c27c45d59622bc1c0a36",
"sourceTag": "t4code-17.0.0-appserver-6",
"upstreamRepository": "https://github.com/can1357/oh-my-pi",
"upstreamTag": "v17.0.4",
"upstreamCommit": "3fdd85ab6c6bab6c0cdee80abbbec0981740a5c0",
"upstreamTag": "v17.0.0",
"upstreamCommit": "d5cd24f39a951bfbd50dc8f50bcf095d59694d6c",
"integrationPatches": [
"bounded-growing-session-replay",
"complete-session-event-projection",
Expand Down Expand Up @@ -75,12 +75,7 @@
"complete-line-transcript-reconciliation",
"missing-lock-only-session-promotion",
"cooperative-tui-to-t4-handoff",
"deterministic-session-file-ordering",
"macos-system-temp-alias-support",
"workspace-native-build-artifact-preference",
"retry-safe-integration-release-metadata",
"versioned-agent-view-lifecycle-corpus",
"session-owned-agent-cancellation"
"deterministic-session-file-ordering"
],
"upstreamTagContainsIntegrationPatches": false
},
Expand Down
4 changes: 2 additions & 2 deletions docs/CURRENT_RELEASE_NOTES.md
Original file line number Diff line number Diff line change
Expand Up @@ -33,9 +33,9 @@ On narrow screens, live output from the session you are already reading no longe

T4 Code v0.1.22 vendors app-wire 0.5.8 from integration commit [33615123](https://github.com/lyc-aon/oh-my-pi/commit/33615123ff986fc9cadf645463b4fed17e8b9f35), source tree `e36475dc81dd4c3703eb207ae466f85947b33525`. The client contract remains `omp-app/1`.

The matching OMP 17.0.4 runtime is built from commit [be0301f5](https://github.com/lyc-aon/oh-my-pi/commit/be0301f566ef172b6a7e1864853b3f04d6545758) and tagged [t4code-17.0.4-appserver-4](https://github.com/lyc-aon/oh-my-pi/tree/t4code-17.0.4-appserver-4). This revision adds the versioned Agent View lifecycle contract, session-owned agent cancellation, macOS system-temp alias support, workspace-native artifact preference, retry-safe release metadata, lock-aware session observation, complete transcript reconciliation, missing-lock-only promotion, the cooperative `/continue-in-t4` handoff, and deterministic session ordering. Terminal-session following and Agent View require this runtime; older appserver builds keep working without those capabilities.
The matching OMP 17.0.0 runtime is built from commit [f909a289](https://github.com/lyc-aon/oh-my-pi/commit/f909a2895bc1a352d1d3c27c45d59622bc1c0a36) and tagged [t4code-17.0.0-appserver-6](https://github.com/lyc-aon/oh-my-pi/tree/t4code-17.0.0-appserver-6). This revision adds lock-aware external session observation, complete line-by-line transcript reconciliation, missing-lock-only session promotion, the cooperative `/continue-in-t4` TUI handoff, and deterministic session file ordering. Terminal-session following requires this runtime; older appserver builds keep working without it. Fork CI requires the release commit to descend from the exact official base.

The integration is based on the official upstream [v17.0.4 tag](https://github.com/can1357/oh-my-pi/tree/v17.0.4), commit [3fdd85ab](https://github.com/can1357/oh-my-pi/commit/3fdd85ab6c6bab6c0cdee80abbbec0981740a5c0). Official upstream OMP v17.0.4 has no `appserver` command and cannot host T4 Code.
The integration is based on the official upstream [v17.0.0 tag](https://github.com/can1357/oh-my-pi/tree/v17.0.0), commit [d5cd24f3](https://github.com/can1357/oh-my-pi/commit/d5cd24f39a951bfbd50dc8f50bcf095d59694d6c). Official upstream OMP v17.0.0 has no `appserver` command and cannot host T4 Code.

## Packages

Expand Down
32 changes: 18 additions & 14 deletions scripts/check-release-consistency.test.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -54,10 +54,11 @@ test("current source tree has one consistent release version", () => {
assert.deepEqual(collectReleaseConsistencyErrors(files), []);
});

test("records the promoted runtime in independent provenance records", () => {
test("tracks the current verified runtime separately from published release provenance", () => {
const matrix = JSON.parse(files.get("compat/omp-app-matrix.json"));
assert.equal(matrix.verifiedRuntime.sourceTag, "t4code-17.0.4-appserver-4");
assert.equal(matrix.publishedRuntime.sourceTag, "t4code-17.0.4-appserver-4");
assert.equal(matrix.publishedRuntime.sourceTag, "t4code-17.0.0-appserver-6");
assert.notEqual(matrix.verifiedRuntime.sourceCommit, matrix.publishedRuntime.sourceCommit);
});

test("allows a verified candidate to advance before a tagged release", () => {
Expand Down Expand Up @@ -97,20 +98,23 @@ test("tagged releases require published provenance to match current contracts",
),
);
}

const drifted = changedRuntime("publishedRuntime", (runtime) => {
runtime.sourceTag = "wrong-tag";
});
assert.ok(
collectReleaseConsistencyErrors(drifted, "v0.1.22").some((error) =>
error.includes(
"published runtime tag must match current verified runtime for tagged releases",
for (const field of ["version", "commit", "tag", "upstream commit", "integration patches"]) {
assert.ok(
errors.some((error) =>
error.includes(
`published runtime ${field} must match current verified runtime for tagged releases`,
),
),
),
);
);
}

const extended = changedRuntime("publishedRuntime", (runtime) => {
runtime.artifactSha256 = "0".repeat(64);
const extended = changed("compat/omp-app-matrix.json", (text) => {
const matrix = JSON.parse(text);
matrix.publishedRuntime = {
...matrix.verifiedRuntime,
artifactSha256: "0".repeat(64),
};
return JSON.stringify(matrix);
});
assert.ok(
collectReleaseConsistencyErrors(extended, "v0.1.22").some((error) =>
Expand Down
Loading