Commit Graph
69 Commits
Author SHA1 Message Date
ilaandClaude Fable 5 36d43cdf16 Require pausing on requirements conflicts; ignore local run scripts
Harness governance / validate (push) Has been cancelled
Phase 0 build gate / verify (push) Has been cancelled
Add a governance rule to AGENTS.md: when implementation reveals that
requirements cannot be satisfied as written (e.g. a capability the
frozen protocol cannot express), the agent must stop, record both
document sources and the technical reason in the task's execution log,
and request adjudication instead of silently narrowing scope or
altering a frozen protocol. After adjudication, every affected document
must be updated before work resumes or a new task is split off -
updating only the architecture/task docs while leaving
docs/02-requirements.md stale invalidates the acceptance criteria, which
is the drift observed in the Phase 5 trial conflict.

Also gitignore the local run-modern.bat / run-win7.bat dev scripts.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-20 11:10:17 +08:00
ilaandClaude Fable 5 63dc40275f Move trial authorization out of MVP scope
Resolve the requirements-vs-architecture conflict found in the Phase 5
review. License v1 is frozen at nine fields with no expiry field
(perpetual is a bool; update/rebind policy are opaque labels), so it
cannot express a trial period. The implementation and architecture docs
correctly recorded that boundary, but 02-requirements still listed trial
as a P0 capability and an MVP acceptance criterion.

Decision: trial moves to V1.1.

- 02-requirements: drop trial from the user role and P0 feature list;
  acceptance now reads 'authorization state consistent between box and
  sub-apps'; add a V1.1 trial row naming the protocol prerequisite; add
  a scope row stating perpetual:false is display-only and never expires,
  and supports_trial does not grant local trial.
- 00-ai-start-here: remove trial from 'MVP does', add it to 'MVP does
  not' with the protocol reason.
- 04-architecture: development order step 5 no longer lists trial/rebind
  as MVP work.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-20 10:43:21 +08:00
ilaandClaude Fable 5 1bc4504913 Add Phase 5 review cross-check ruling
Concede two errors in the original review: it cited 01-vision.md for a
'perpetual offline use' promise the vision never makes (only 'offline
verifiable'), and it described the clock-rollback check too broadly -
that check only covers same-list rollback, not an older list paired
with a correspondingly rolled-back clock.

Accept Codex's O5 (verified: StoreRevocations replaces the cache after
signature check with no cross-list monotonicity, so signed revocation
lists can be replayed) and O6, plus four precision refinements. Add the
threat-boundary rationale for O5: monotonicity does not stop a local
attacker but does stop distribution-channel replay, a ~38-day revocation
rollback window is exploitable without any clock control, and benign CDN
staleness alone silently rolls back revocation state - making the
'reject older list' check a correctness requirement, not just hardening.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-20 10:28:08 +08:00
ilaandClaude Fable 5 5db6031e4b Add Phase 5 licensing review (T-501~T-503)
Code-level audit of the authorization chain: domain-separated machine
hash with no raw identifiers in errors or storage, strict License v1
verification (base64 re-encode round-trip, exact 9-field shape,
timestamp round-trip, machine-hash binding), and revocation state with
clock-rollback defense and revoked-before-expiry ordering. Snapshots to
the UI carry no license ID, signature, path or raw Windows identifiers;
defaults fail closed. Catalog/License/Revocation share one canonical
JSON implementation.

No security defect found. Records two product decisions needed: the
revocation list is a hard dependency for any authorization (missing or
>38-day-old list blocks all launches, in tension with the offline
licensing vision and lacking a distribution plan), and trial is a P0
requirement plus MVP acceptance criterion that is deliberately not
implemented, leaving 02-requirements in conflict with the architecture
and task docs.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-20 09:42:30 +08:00
ila 76f6108496 Implement authorization import and revocation checks (T-503) 2026-07-20 09:07:30 +08:00
ila b4453130de Define authorization integration task (T-503) 2026-07-20 08:43:24 +08:00
ila cd76f7f900 Implement offline license verification (T-502) 2026-07-20 01:29:40 +08:00
ila c51ff30c54 Define license verification task (T-502) 2026-07-20 01:12:04 +08:00
ila 8d81276fd9 Implement machine fingerprint hashing (T-501) 2026-07-20 00:19:13 +08:00
ila 94ea334d1c Define machine fingerprint contract (T-501) 2026-07-20 00:11:56 +08:00
ila 24e9862192 Harden self-update recovery (T-617) 2026-07-20 00:05:41 +08:00
ila ea1d6c8ee4 Define self-update recovery remediation (T-617) 2026-07-19 23:53:27 +08:00
ilaandClaude Fable 5 a2cda73deb Add Phase 4 launch/update/self-update review with cross-check ruling
Harness governance / validate (push) Has been cancelled
Phase 0 build gate / verify (push) Has been cancelled
Code-level audit of T-401~T-403: launch has no command-injection surface
(AppID-only request, entrypoint must be in recorded installed files,
safepath+JoinUnder+Lstat, no-arg exec.Command and parameterless
ShellExecuteExW), update never force-kills (confirm + natural-exit wait
only), and self-update is journaled, rollback-capable and health-gated
before backup deletion. Confirms Phase 3 O1 is closed by T-401's
preSwitchCheck.

Ruling accepts Codex's follow-up: O4 (self-flagged T-403 fault-injection
and mid-phase Recover test gaps - all four claims verified) and O5
(split assembly prerequisites instead of lumping them under T-502).
Adds a low-cost path to close O4 mostly via the existing DirectorySyncer
seam and filesystem permission tricks, without new production seams.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-19 23:44:01 +08:00
ila 2c561894fd Implement catalog startup diagnostics (T-616) 2026-07-19 22:22:46 +08:00
ila 06234e11bf Define catalog startup task (T-616) 2026-07-19 22:09:16 +08:00
ila 13004218cf Implement self-update recovery (T-403) 2026-07-19 22:00:38 +08:00
ila 2900deba4f Define self update task (T-403) 2026-07-19 21:42:23 +08:00
ila 339beaa9b3 Implement app update orchestration (T-402) 2026-07-19 21:39:33 +08:00
ila fda52a57ca Define app update orchestration task (T-402) 2026-07-19 21:27:26 +08:00
ila 87083c387f Implement controlled app launch (T-401) 2026-07-19 21:10:59 +08:00
ila d0cf333394 Define process and launch task (T-401) 2026-07-19 20:47:45 +08:00
ila df6c243b21 Preserve staging I/O failure causes (T-615) 2026-07-19 20:28:56 +08:00
ila d1603c52b6 Define I/O diagnostic remediation task (T-615) 2026-07-19 20:13:03 +08:00
ilaandClaude Fable 5 09f56478d3 Add Phase 3 review cross-check ruling
Harness governance / validate (push) Has been cancelled
Phase 0 build gate / verify (push) Has been cancelled
Adjudicate Codex's review correction: concede three overstatements in
the original review (M3 loop not actually complete - InstallService has
no production assembly and T-401 launch is unbuilt; scope 'no security
defect' to T-302/T-303; O2 mischaracterized - ENOSPC during io.Copy is
misclassified as zip_corrupt with a broken error chain, escalate to P1;
O1 fix was flawed - recheck IsRunning explicitly instead of inferring
app_running from rename failure). Add finding: disk-full surfaces at
write/sync/close with three different codes, so the O2 fix must span the
whole write->sync->close sequence.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-19 20:06:55 +08:00
ilaandClaude Fable 5 1ad00f8ef2 Add Phase 3 install integration review (T-301~T-303)
Code-level audit of the verified install chain: hash-before-parse and
single-file-handle TOCTOU defenses in verified_package.go, strict
app.json parse cross-checked against the signed Catalog, untrusted
download verified against Catalog Size/SHA256, mandatory non-bypassable
pre-extract disk/running checks, and a complete stable failure-code
enum. No security defect found; records five minor optimizations, the
top being the IsRunning TOCTOU (recheck before the current->backup
rename).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-19 19:44:57 +08:00
ila ae3f64c407 Add install preflight safeguards (T-303) 2026-07-18 18:14:25 +08:00
ila 449b183ca3 Define failure handling task (T-303) 2026-07-18 18:04:01 +08:00
ila 14589abb31 Integrate verified installation flow (T-302) 2026-07-18 17:55:01 +08:00
ila 6575c9ad9b Define installation integration task (T-302) 2026-07-18 17:35:11 +08:00
ilaandClaude Fable 5 a72e7b04dc Add T-606~T-614 remediation review; ignore editor workspace
Harness governance / validate (push) Has been cancelled
Phase 0 build gate / verify (push) Has been cancelled
Verify at code level that the Phase 1/2 review findings were actually
closed (not just self-reported): icon cache concurrency + LRU + bounded
fetch (T-606), UI-thread icon delivery (T-607), install durability with
Windows FlushFileBuffers / POSIX dir sync (T-613), ZIP central-directory
preflight (T-612), and catalog signature cross-impl vectors (T-614).
All confirmed real. Records three residuals (R1 real power-loss
validation, R2 per-file fsync cost, R3 singleflight ctx caveat).

Also gitignore *.code-workspace (per review recommendation).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-18 17:05:00 +08:00
ila 0c1b7662c6 Freeze catalog signature vectors (T-614) 2026-07-18 16:46:17 +08:00
ila 9e5f3f4840 Define catalog signature vector task (T-614) 2026-07-18 16:36:31 +08:00
ila 20596a7de4 Fence installation transaction durability (T-613) 2026-07-18 16:28:49 +08:00
ila 84befee70f Define installation durability task (T-613) 2026-07-18 16:14:12 +08:00
ila 0f69fa330e Preflight ZIP central directory metadata (T-612) 2026-07-18 15:40:44 +08:00
ila 65ff7a3f23 Define ZIP central directory preflight task (T-612) 2026-07-18 15:29:39 +08:00
ila 320b83d929 Implement unsafe icon cache diagnostics (T-611) 2026-07-18 15:18:29 +08:00
ila 6455fec811 Define unsafe icon cache diagnostics task (T-611) 2026-07-18 14:31:53 +08:00
ila e9386d26e7 Split Gio shell responsibilities (T-610) 2026-07-18 14:23:02 +08:00
ila 75b1803564 Define Gio shell responsibility split task (T-610) 2026-07-17 18:21:05 +08:00
ila 171572973b Stabilize visible item snapshots (T-609) 2026-07-17 17:31:46 +08:00
ila ed9ded2110 Define visible snapshot lifecycle task (T-609) 2026-07-17 10:49:58 +08:00
ila 1b7f72e658 Add adapter interaction contracts (T-608)
Harness governance / validate (push) Has been cancelled
Phase 0 build gate / verify (push) Has been cancelled
2026-07-17 10:41:40 +08:00
ila 0705948d74 Define adapter interaction contract task (T-608) 2026-07-17 10:34:14 +08:00
ila 0945fe93dc Route icon results through UI events (T-607) 2026-07-17 10:21:44 +08:00
ila fba672381e Define icon UI event delivery task (T-607) 2026-07-17 09:54:47 +08:00
ila f1cc7308db Harden icon cache concurrency (T-606) 2026-07-17 09:38:25 +08:00
ila 8873a5261d Define icon cache hardening task (T-606) 2026-07-17 09:10:20 +08:00
ila 6fd19d0f43 Harden Windows package paths (T-605) 2026-07-16 23:56:19 +08:00
ila f7a803d944 Define Windows path hardening task (T-605) 2026-07-16 23:36:39 +08:00
ila 7efcab5dfe Isolate modern and Win7 workspaces (T-604) 2026-07-16 21:27:52 +08:00
ila e4a9295cbf Define workspace isolation task (T-604) 2026-07-16 21:15:40 +08:00
ilaandClaude Fable 5 a036ce9a8e Add Phase 0 skeleton review with cross-check ruling
Record the full-stack review of the Phase 0 skeleton (T-001~T-004),
Codex's second-pass rebuttal, and the cross-checked final ruling:
confirmed facts (with evidence), accept/correct notes, and a
finalized action order. P1 (root go.work Win7 version bleed) is the
only structural fix flagged for near-term handling.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-16 21:09:25 +08:00
ila 90dc09d13d Use single-agent workflow 2026-07-16 20:42:32 +08:00
ila 8dad40f934 Implement resumable download queue (T-301) 2026-07-16 19:49:06 +08:00
ila 2d302b731a Define multi-agent download workflow (T-301) 2026-07-16 18:48:15 +08:00
ila a52acbf926 Add app details and icon cache (T-204)
Harness governance / validate (push) Has been cancelled
Phase 0 build gate / verify (push) Has been cancelled
2026-07-16 17:22:37 +08:00
ila db8d93e843 Build virtualized software list (T-203) 2026-07-16 17:10:42 +08:00
ila 819b1cdf88 Recognize local app states (T-202) 2026-07-16 17:00:06 +08:00
ila 2e21c9f327 Integrate validated catalog loading (T-201) 2026-07-16 16:52:46 +08:00
ila 9da72caa01 Prototype atomic install recovery (T-103) 2026-07-16 16:32:58 +08:00
ila 0ffeff63e1 Prototype secure ZIP extraction (T-102) 2026-07-16 16:22:45 +08:00
ila 0d6ed05d7e Prototype signed catalog fallback (T-101) 2026-07-16 16:13:18 +08:00
ila 45c242ecec Add Phase 0 build verification gate (T-004) 2026-07-16 15:51:34 +08:00
ila 6f920eb457 Add Gio app shells and platform stubs (T-003) 2026-07-16 15:43:03 +08:00
ila 0e20dd76b2 Add domain states and event runtime (T-002) 2026-07-16 15:31:41 +08:00
ila cf9fc01c68 Initialize Phase 0 monorepo skeleton (T-001) 2026-07-16 15:28:13 +08:00
ilaandClaude Fable 5 0184595ccc Add harness coding docs for SoftBox (Go + Gio dual-build)
Harness governance / validate (push) Has been cancelled
Initialize the full harness coding document set from the
harness_coding_docs template, customized for the SoftBox project:

- Vision, requirements, tech stack (modern Go 1.25 + Gio v0.10.1;
  Win7 legacy Go 1.20.14 + Gio v0.6.0), architecture, coding rules
- Protocol contracts (signed catalog, package protocol v1, Ed25519
  license, events, CLI) and Gio view structure
- Roadmap Phase 0-6 with 20 suggested tasks; T-001 (monorepo
  skeleton) filed and ready to claim
- Agent entry points (AGENTS.md, docs/00-ai-start-here.md),
  context manifest, governance scripts and tests
- Merge Go gitignore with harness rules; keep go.work tracked

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-16 14:33:54 +08:00
ila 03bd4ab62a Initial commit 2026-07-16 14:13:21 +08:00