NORTHSET
Proof-of-Pass Receipt
Receipt ID M-161
ISSUE / WORK[Bug] Tab label changes incorrectly when switching tabs · PR #31
CONTRIBUTOR SELF-RUN — NOT MAINTAINER VERIFICATION
RUN→
01 / TECHNICAL RESULT
Technical result
declared commands passed
Recorded on the named code in the named execution environment. The evidence annex carries the exact scope.
- Upstream
- OPENmutable external state
- Attempts
- 4 totalcurrent
M-161· #4 - Cost record
- PARTIALunpriced
02 / RECORDED WORK SEQUENCE
Northset Proofline
Every task-bound attempt is shown in recorded order. Anatomy geometry follows each non-null elapsed duration’s share; labels retain exact recorded time.
- ATTEMPT 1
M-124FAILED ORACLEverification - ATTEMPT 2
M-134FAILED INFRA TERMINALinfrastructure - ATTEMPT 3
M-146FAILED ORACLEverification - ATTEMPT 4
M-161READY
ATTEMPT 4 / EXECUTION ANATOMY
03 / ECONOMIC NARRATIVE
Economic identity
Observed sponsorship, authorization, scope, transfer, and outcome. No estimates or inferred value.
01 / MANDATE
Sponsored and authorized
The recorded mandate names both its sponsor and initiative, with authorization tied to a named approver and approval time.
02 / WORK
Demand became scoped work
An external issue invitation became a stable task and a recorded code-and-test scope, without treating scope as a measure of value.
03 / EXTERNAL OUTCOME
Transfer and upstream state
The recorded maintainer transfer and its contingency are separate from upstream state, which remains a mutable external observation.
04 / COST COMPLETENESS
Known, unknown, and unpriced
Known: maintainer payment was none. A known zero external transfer is not a zero total cost.
Missing or unpriced components
- model inference
- actual host compute
- human review
- shared tooling
No complete total is recorded; see the missing or unpriced component record above.
Evidence annexEconomic · technical · provenance · limitations
01Economic evidence
Lineage, usage, caps, outcome, and cost provenance
Economic evidence
Lineage, usage, caps, outcome, and cost provenanceAttempt lineage
M-124attempt 1 · FAILED ORACLE · verificationM-134attempt 2 · FAILED INFRA TERMINAL · infrastructureM-146attempt 3 · FAILED ORACLE · verificationM-161attempt 4 · READY
Recorded usage
- requested reviewer model
- gpt-5.6-sol
- actual reviewer model
- not captured
- requested author model
- gpt-5.6-sol
- actual author model
- not captured
- networked setup phase
- 5m08s
- install-only duration
- not captured
- declared commands
- 10.6s
- unclassified executor time
- 2m14s
- CPU time
- not captured
- peak RSS
- not captured
Configured resource envelope
- CPU cap
- 2
- memory cap
- 4096 MB
- PID cap
- 512
- command wall cap
- 1800s
- output cap / stream
- 2000000 bytes
Configured limits are an envelope, not observed consumption.
Cost lines
- maintainer paymentobserved quantity unpriced · 0 external transfer · amount unavailable
Cost status: partial. Values without source-backed quantities and rates remain null.
Outcome facts
- technical checks passed
- true
- PR opened
- true
- CI
- pending
- merged
- false
- accepted as submitted
- not established
- external cycle time
- not captured
- released
- not observed
- deployed
- not observed
- business result
- not observed
02Technical evidence
Code, environment, exact commands, patch, and outputs
Technical evidence
Code, environment, exact commands, patch, and outputsProject
Work
[Bug] Tab label changes incorrectly when switching tabs · PR #31
Verification execution
runtime: northset-oss executor v1
human operator: aeziz
Code
- base
7682cf39969b1cee4914ff1ed6b8cfd4489f1d7c- recorded patch commit
8cf5d7102c774242e69da2a06493f0b00899e464
declared metadata; not execution-bound- patch diff SHA-256
sha256:b5f36fabd914b65751e92ba8890d758aef05c5321ac5ef44f0e594154b0f12e4
bound to executed patch bytes
Environment
- image reference
- node@sha256:40ad9f3064e67d6860b4bc3fe1880b2953934fd6320ada990e45fe0efa6badd7
- repository digest
node@sha256:40ad9f3064e67d6860b4bc3fe1880b2953934fd6320ada990e45fe0efa6badd7- immutable image ID
sha256:6ed6ff875e9714bb845b850b08f3ad231ccbb5848812647bcf11acdd4bd1d2f8- platform
- linux/arm64
- network
- phaseA:bridge,phaseB:none
Declared checks
Execution summary
1/1 declared command returned exit 0 in the recorded environment
npm --prefix apps/frontend test -- --runInBand --runTestsByPath 'app/(protected)/note/[id]/page.test.tsx' --moduleNameMapper '{"^react$":"<rootDir>/node_modules/react","^react-dom$":"<rootDir>/node_modules/react-dom","^@/(.*)$":"<rootDir>/$1"}'exit 0 · 10.6s
run wall (derived from recorded timestamps) 7m33s
PASS — 1/1 declared command
Every command listed returned exit 0 in the declared environment. Only the listed commands are in scope. Unlisted test, lint, typecheck, build, coverage, compiler, full-suite, and CI gates are not implied or recorded.
Public scope interpretation
The receipt proves the declared automated checks only; maintainer review and merge remain independent human decisions.
Committed patch.diff
diff --git a/apps/frontend/app/(protected)/note/[id]/page.test.tsx b/apps/frontend/app/(protected)/note/[id]/page.test.tsx
new file mode 100644
index 0000000000000000000000000000000000000000..61462b0dba8b651dcc1dfd0ce524d03c19befc0c
--- /dev/null
+++ b/apps/frontend/app/(protected)/note/[id]/page.test.tsx
@@ -0,0 +1,57 @@
+import { render, waitFor } from "@testing-library/react";
+import useTab from "@/features/workspace/hooks/useTab";
+import useAuth from "@/hooks/useAuth";
+import useNote from "@/hooks/useNote";
+import NotePage from "./page";
+
+jest.mock("@/components/Note/Banner", () => () => null);
+jest.mock("@/components/Note/Properties", () => () => null);
+jest.mock("@/components/Note/TitleNote", () => () => null);
+jest.mock("@/features/editor/components/Editor", () => () => null);
+jest.mock("@/features/preview/components/Preview", () => () => null);
+jest.mock("@/features/editor/context/Editor.context", () => ({
+ __esModule: true,
+ default: ({ children }: { children: React.ReactNode }) => children,
+}));
+jest.mock("@/features/presence/context/presence.context", () => ({
+ __esModule: true,
+ default: ({ children }: { children: React.ReactNode }) => children,
+}));
+jest.mock("@/features/workspace/hooks/useTab");
+jest.mock("@/hooks/useAuth");
+jest.mock("@/hooks/useNote");
+
+describe("Note page", () => {
+ const setLabel = jest.fn();
+
+ beforeEach(() => {
+ jest.clearAllMocks();
+ (useTab as jest.Mock).mockReturnValue({
+ activeTabId: "note:active-note-id",
+ setLabel,
+ });
+ (useAuth as jest.Mock).mockReturnValue({ user: { _id: "owner-id" } });
+ (useNote as jest.Mock).mockReturnValue({
+ note: {
+ _id: "fetched-note-id",
+ title: "Fetched note title",
+ ownerId: "owner-id",
+ },
+ });
+ });
+
+ it("updates the fetched note's tab label when another tab is active", async () => {
+ render(<NotePage />);
+
+ await waitFor(() => {
+ expect(setLabel).toHaveBeenCalledWith(
+ "note:fetched-note-id",
+ "Fetched note title",
+ );
+ });
+ expect(setLabel).not.toHaveBeenCalledWith(
+ "note:active-note-id",
+ "Fetched note title",
+ );
+ });
+});
diff --git a/apps/frontend/app/(protected)/note/[id]/page.tsx b/apps/frontend/app/(protected)/note/[id]/page.tsx
index 936db28473505ec7245d7407ae6aff1be4bef2d7..85a074a875e1bfcd403786aca56da00d603773cf 100644
--- a/apps/frontend/app/(protected)/note/[id]/page.tsx
+++ b/apps/frontend/app/(protected)/note/[id]/page.tsx
@@ -15,10 +15,10 @@ const page = () => {
const { note } = useNote();
const { user } = useAuth();
const [editable, setEditable] = useState(false)
- const { setLabel, activeTabId } = useTab();
+ const { setLabel } = useTab();
useEffect(() => {
- if (note && activeTabId) {
- setLabel(activeTabId, note.title);
+ if (note) {
+ setLabel(`note:${note._id}`, note.title);
const isOwer = note.ownerId == user._id
if (note.ownerId == user._id) {
setEditable(true)
Redacted stdout
=== cmd 1: npm --prefix apps/frontend test -- --runInBand --runTestsByPath 'app/(protected)/note/[id]/page.test.tsx' --moduleNameMapper '{"^react$":"<rootDir>/node_modules/react","^react-dom$":"<rootDir>/node_modules/react-dom","^@/(.*)$":"<rootDir>/$1"}' ===
> frontend@0.1.0 test
> jest --runInBand --runTestsByPath app/(protected)/note/[id]/page.test.tsx --moduleNameMapper {"^react$":"<rootDir>/node_modules/react","^react-dom$":"<rootDir>/node_modules/react-dom","^@/(.*)$":"<rootDir>/$1"}
Redacted stderr
=== cmd 1: npm --prefix apps/frontend test -- --runInBand --runTestsByPath 'app/(protected)/note/[id]/page.test.tsx' --moduleNameMapper '{"^react$":"<rootDir>/node_modules/react","^react-dom$":"<rootDir>/node_modules/react-dom","^@/(.*)$":"<rootDir>/$1"}' ===
PASS app/(protected)/note/[id]/page.test.tsx
Note page
✓ updates the fetched note's tab label when another tab is active (65 ms)
Test Suites: 1 passed, 1 total
Tests: 1 passed, 1 total
Snapshots: 0 total
Time: 5.337 s
Ran all test suites within paths "app/(protected)/note/[id]/page.test.tsx".
03Provenance & limitations
Bundle identity, attestation, verification, and claims boundary
Provenance & limitations
Bundle identity, attestation, verification, and claims boundaryRecord details
- payment
- none · not merge-contingent
- redactions
- none recorded
- Bundle contents digest
sha256:d0d9dfc467c2718a53a961c2b686d639503b7ca63f3615b8895fb126196e0634- Signed asset SHA-256
sha256:f4ffc0fde0e11c5ba3ddc89c12d981a3220cc6b6b44b5a72ac198cd83f6acf34- Signed provenance recorded
- verified 2026-07-16T22:49:28.186Z
NOT INCLUDED
- Does not prove code quality
- Does not prove security
- Contributor self-run record of Northset's own contribution; not the maintainer's verification.
- The receipt proves the declared automated checks only; maintainer review and merge remain independent human decisions.
Signed bundle
Verify this receipt
gh attestation verify run-record-M-161-d0d9dfc467c2.tar.gz --repo northset-oss/verification-pilot --signer-workflow northset-oss/verification-pilot/.github/workflows/attest-bundle.ymlAttestation confirms that Northset's signing workflow produced this exact bundle. The signer does not witness the recorded run, and verification does not turn it into maintainer verification.
QR → receipt page