Dashboard › institutional-transition-lab › Session 1X1y4BwqrauN
1X1y4BwqrauNLuQICPerform a fresh, smaller, read-only security audit of only required-member stream integrity for issue #4 in /home/byk/Code/institutional-transition-lab. This replaces a ZIP-stream reviewer that returned empty twice and is disjoint from the resource-accounting audit. Never edit files or inspect governance bodies, codings, outcomes, reports, dates, detector output, or source-adjudication scopes.
Scope only: unique selection and opening of required documents.json and v1.2-adjudication-package.json; CRC/corrupt/truncated stream handling; exact member bytes compared with the already verified durable payload bytes; member read cleanup/error behavior; whether malformed required streams can be accepted or parsed. Do not review archive path/name/mode/encryption/count metadata except uniqueness needed for these exact names; decompression resource accounting; _read_regular_file; JSON strictness; pin identity/hash ordering; or CLI outputs.
Primary files: only relevant required-member ZIP code in src/institution_lab/governance_adjudication.py and narrow tests in tests/test_governance_adjudication.py. Run read-only tests/probes. Return substantive evidence, never empty. Findings first, severity ordered, exact current file:line references, PASS/CONCERN/MUST-FIX/BLOCKED labels; deterministic regression for each defect. If clean, state PASS with probes and residual risks. End exactly MERGE or DO-NOT-MERGE.
I’ll inspect only the required-member extraction path and its narrow tests, then run isolated read-only probes for duplicate selection, CRC corruption, truncation, cleanup, byte equality, and parse reachability.
Found 8 matches
/home/byk/Code/institutional-transition-lab/src/institution_lab/governance_adjudication.py:
Line 157: def _verify_input_payloads(
Line 180: with zipfile.ZipFile(io.BytesIO(artifact)) as archive:
Line 191: "documents.json": documents,
Line 192: "v1.2-adjudication-package.json": coding_package,
Line 201: with archive.open(info) as source:
Line 207: except zipfile.BadZipFile as error:
Line 388: evidence_bounds.get("source_text_truncated") is True
Line 390: or evidence_bounds.get("patch_selection_truncated") is True
<path>/home/byk/Code/institutional-transition-lab/src/institution_lab/governance_adjudication.py</path>
<type>file</type>
<content>
130: try:
131: value = json.loads(
132: payload,
133: object_pairs_hook=_reject_duplicate_keys,
134: parse_constant=_reject_non_finite_number,
135: )
136: except (UnicodeDecodeError, json.JSONDecodeError) as error:
137: raise ValueError(f"{label} is not valid JSON: {error}") from error
138: if not isinstance(value, dict):
139: raise ValueError(f"{label} must be an object")
140: return value
141:
142:
143: def _validate_manifest_identity(manifest: Any) -> None:
144: if not isinstance(manifest, dict):
145: raise ValueError("input manifest must be an object")
146: if set(manifest) != REQUIRED_INPUT_PINS:
147: raise ValueError("input manifest has missing or unexpected keys")
148: if type(manifest.get("workflow_run_id")) is not int or manifest["workflow_run_id"] < 1:
149: raise ValueError("input manifest workflow_run_id is ...
Found 29 matches
/home/byk/Code/institutional-transition-lab/tests/test_governance_adjudication.py:
Line 50: "documents": tmp_path / "documents.json",
Line 65: with zipfile.ZipFile(paths["artifact"], "w") as archive:
Line 66: archive.writestr("documents.json", paths["documents"].read_bytes())
Line 67: archive.writestr(
Line 68: "v1.2-adjudication-package.json",
Line 195: "source_text_truncated": False,
Line 197: "patch_selection_truncated": False,
Line 210: "source_text_truncated": False,
Line 212: "patch_selection_truncated": False,
Line 379: ("evidence_bounds", {"source_text_truncated": True}),
Line 426: documents["documents"][0]["evidence_bounds"]["source_text_truncated"] = True
Line 688: documents = tmp_path / "documents.json"
Line 703: with zipfile.ZipFile(artifact, "w") as archive:
Line 704: archive.writestr("documents.json", documents.read_bytes())
Line 705: ...
<path>/home/byk/Code/institutional-transition-lab/tests/test_governance_adjudication.py</path>
<type>file</type>
<content>
680: assert summary["canonicalization_gate"] == "closed"
681:
682:
683: def test_input_manifest_rejects_changed_file_bytes(
684: tmp_path: Path,
685: monkeypatch: pytest.MonkeyPatch,
686: ) -> None:
687: artifact = tmp_path / "artifact.zip"
688: documents = tmp_path / "documents.json"
689: coding_package = tmp_path / "coding-package.json"
690: protocol = tmp_path / "protocol.md"
691: coding_schema = tmp_path / "coding-schema.json"
692: adjudication_schema = tmp_path / "adjudication-schema.json"
693: paths = {
694: "artifact": artifact,
695: "documents": documents,
696: "coding_package": coding_package,
697: "protocol": protocol,
698: "coding_schema": coding_schema,
699: "adjudication_schema": adjudication_schema,
700: }
701: for path in paths.values():
702: path.write_text(path.name)
703: with zipfile.ZipFile(artifact, "w") as ...
<path>/home/byk/Code/institutional-transition-lab/tests/test_governance_adjudication.py</path>
<type>file</type>
<content>
870: def test_input_manifest_rejects_non_object() -> None:
871: with pytest.raises(ValueError, match="input manifest must be an object"):
872: verify_input_manifest(
873: [], # type: ignore[arg-type]
874: artifact=Path("unused"),
875: documents=Path("unused"),
876: coding_package=Path("unused"),
877: protocol=Path("unused"),
878: coding_schema=Path("unused"),
879: adjudication_schema=Path("unused"),
880: )
881:
882:
883: def test_input_manifest_rejects_duplicate_artifact_members(
884: tmp_path: Path,
885: monkeypatch: pytest.MonkeyPatch,
886: ) -> None:
887: manifest, paths = _write_pinned_cli_inputs(tmp_path, monkeypatch)
888: with (
889: pytest.warns(UserWarning, match="Duplicate name"),
890: zipfile.ZipFile(paths["artifact"], "a") as archive,
891: ):
892: archive.writestr("documents.json", ...
Found 11 matches /home/byk/Code/institutional-transition-lab/src/institution_lab/governance_adjudication.py: Line 5: import io Line 10: import zipfile Line 11: from collections import Counter Line 67: MAX_ARCHIVE_MEMBERS = 128 Line 68: MAX_ARCHIVE_MEMBER_BYTES = 16 * 1024 * 1024 Line 69: MAX_ARCHIVE_EXPANDED_BYTES = 64 * 1024 * 1024 Line 182: if len(infos) > MAX_ARCHIVE_MEMBERS: Line 188: if sum(info.file_size for info in infos) > MAX_ARCHIVE_EXPANDED_BYTES: Line 199: if info.file_size > MAX_ARCHIVE_MEMBER_BYTES: Line 202: member_bytes = source.read(MAX_ARCHIVE_MEMBER_BYTES + 1) Line 203: if len(member_bytes) > MAX_ARCHIVE_MEMBER_BYTES:
Found 6 matches /home/byk/Code/institutional-transition-lab/tests/test_governance_adjudication.py: Line 652: def test_input_manifest_rejects_self_consistent_substitute(field: str) -> None: Line 683: def test_input_manifest_rejects_changed_file_bytes( Line 729: def test_input_manifest_rejects_files_not_from_pinned_artifact( Line 870: def test_input_manifest_rejects_non_object() -> None: Line 883: def test_input_manifest_rejects_duplicate_artifact_members( Line 908: def test_input_manifest_rejects_excessive_artifact_member_count(
drwxr-xr-x 6 byk byk 4096 Sep 9 05:23 /tmp/opencode
No files found
============================= test session starts ============================== platform linux -- Python 3.13.11, pytest-8.4.2, pluggy-1.6.0 rootdir: /home/byk/Code/institutional-transition-lab configfile: pyproject.toml plugins: anyio-4.14.2 collected 78 items / 76 deselected / 2 selected tests/test_governance_adjudication.py .. [100%] ======================= 2 passed, 76 deselected in 0.10s =======================
<path>/home/byk/Code/institutional-transition-lab/src/institution_lab/governance_adjudication.py</path>
<type>file</type>
<content>
220: def verify_input_manifest(
221: manifest: Any,
222: *,
223: artifact: Path,
224: documents: Path,
225: coding_package: Path,
226: protocol: Path,
227: coding_schema: Path,
228: adjudication_schema: Path,
229: ) -> dict[str, Any]:
230: _validate_manifest_identity(manifest)
231: return _verify_input_payloads(
232: manifest,
233: artifact=_read_regular_file(artifact, max_bytes=MAX_ARTIFACT_BYTES),
234: documents=_read_regular_file(documents),
235: coding_package=_read_regular_file(coding_package),
236: protocol=_read_regular_file(protocol),
237: coding_schema=_read_regular_file(coding_schema),
238: adjudication_schema=_read_regular_file(adjudication_schema),
239: ).pins
240:
241:
242: def _duplicates(values: list[str]) -> set[str]:
243: counts = Counter(values)
244: return {value for value, count in counts.items() if count > ...
clean ('ACCEPT', ('documents', 'coding package', 'adjudication schema'))
missing documents.json ('REJECT builtins.ValueError: artifact member missing: documents.json', ())
duplicate documents.json ('REJECT builtins.ValueError: artifact member is not unique: documents.json', ())
missing v1.2-adjudication-package.json ('REJECT builtins.ValueError: artifact member missing: v1.2-adjudication-package.json', ())
duplicate v1.2-adjudication-package.json ('REJECT builtins.ValueError: artifact member is not unique: v1.2-adjudication-package.json', ())
stored_bad_crc documents.json ('REJECT builtins.ValueError: artifact is not a valid ZIP archive', ())
stored_bad_crc v1.2-adjudication-package.json ('REJECT builtins.ValueError: artifact is not a valid ZIP archive', ())
deflate_invalid_block documents.json ('REJECT zlib.error: Error -3 while decompressing data: invalid block type', ())
deflate_invalid_block v1.2-adjudication-package.json ('REJECT zlib.error: Error -3 while decompressing data: ...
documents.json raw_read b'{}' declared 2 verify ('ACCEPT', None, None, ('documents', 'coding package', 'adjudication schema'))
v1.2-adjudication-package.json raw_read b'{}' declared 2 verify ('ACCEPT', None, None, ('documents', 'coding package', 'adjudication schema'))
DEFLATED documents.json (1, 4, b'{}', False, ('ACCEPT', ('documents', 'coding package', 'adjudication schema')))
DEFLATED v1.2-adjudication-package.json (1, 4, b'{}', False, ('ACCEPT', ('documents', 'coding package', 'adjudication schema')))
BZIP2 documents.json (1, 37, b'{}', False, ('ACCEPT', ('documents', 'coding package', 'adjudication schema')))
BZIP2 v1.2-adjudication-package.json (1, 37, b'{}', False, ('ACCEPT', ('documents', 'coding package', 'adjudication schema')))
LZMA documents.json (1, 21, b'{}', False, ('ACCEPT', ('documents', 'coding package', 'adjudication schema')))
LZMA v1.2-adjudication-package.json (1, 21, b'{}', False, ('ACCEPT', ('documents', 'coding package', 'adjudication schema')))
documents.json mismatch rejected before parsing v1.2-adjudication-package.json mismatch rejected before parsing
Your first result was empty. Complete the same narrow read-only required-member stream-integrity audit now and return substantive evidence or an explicit blocker. Never edit files. Scope only in /home/byk/Code/institutional-transition-lab: unique selection/opening of required documents.json and v1.2-adjudication-package.json; CRC/corrupt/truncated stream handling; exact member bytes compared with already verified durable payload bytes; member-read cleanup/error behavior; whether malformed required streams can be accepted or parsed; narrowly corresponding code/tests in src/institution_lab/governance_adjudication.py and tests/test_governance_adjudication.py. Do not review general archive path/name/mode/encryption/count metadata beyond exact required-name uniqueness, decompression resource accounting, regular-file reads, JSON strictness, pin identity/hash ordering, CLI output, or governance/source scopes. Review unchanged current working copy and run narrow read-only probes. Findings first with exact file:line evidence and PASS/CONCERN/MUST-FIX/BLOCKED labels; deterministic regression for each defect. Never return empty. End exactly MERGE or DO-NOT-MERGE.
archive.open(info).read(...) trusts ZipExtFile to validate the compressed stream (governance_adjudication.py:201-202). The only later integrity check compares returned decompressed bytes with durable bytes (governance_adjudication.py:203-206). It never checks whether the compression stream reached its native end marker. Parsing then proceeds at governance_adjudication.py:209 and :215.
Deterministic in-memory probes removed the final compressed byte while preserving the complete decompressed payload and CRC:
ZIP_DEFLATED: accepted for both required members; native decompressor eof=False.ZIP_BZIP2: accepted for both; eof=False.ZIP_LZMA: accepted for both; eof=False.Thus malformed required streams can be accepted and parsed.
Required regression: Parameterize both required names and all three compression methods. Remove the terminal compressed byte while preserving the expected uncompressed bytes and CRC. Assert ValueError before _parse_json_object runs.
The read at governance_adjudication.py:202 can raise native decompressor exceptions, but governance_adjudication.py:207-208 catches only zipfile.BadZipFile.
Setting DEFLATE’s block type to the reserved value produced zlib.error: invalid block type for either required member. Neither case reached parsing. Source and archive context managers still closed correctly.
Required regression: Corrupt each required member with the reserved DEFLATE block type. Assert a validation ValueError with the decompressor error retained as its cause, no parser invocation, and closed source/archive handles.
* 🔴 (05:21) [requested-security-audit] User requested a fresh, smaller, read-only security audit of required-member stream integrity for issue #4 in `/home/byk/Code/institutional-transition-lab`, replacing a ZIP-stream reviewer that had returned empty twice; audit is disjoint from the resource-accounting audit. * 🔴 (05:21) User directed: “Never edit files or inspect governance bodies, codings, …